目录
一、File 类
1.File类属性
2.构造方法
3.普通方法
二、InputStream
1.方法
2.FileInputStream
三、OutputStream
1.方法
2.FileOutputStream
四、针对字符流对象进行读写操作
一、File 类
1.File类属性
修饰符及类型 | 属性 | 说明 |
static String | pathSeparator | 依赖于系统的路径分隔符,String类型的表示 |
static char | pathSeparator | 依赖于系统的路径分隔符,char类型的表示 |
2.构造方法
签名 | 说明 |
File(File parent, Stringchild) | 根据父目录 + 孩子文件路径,创建一个新的 File 实例 |
File(String pathname) | 根据文件路径创建一个新的 File 实例,路径可以是绝对路径或者相对路径 |
File(String parent, Stringchild) | 根据父目录 + 孩子文件路径,创建一个新的 File 实例,父目录用路径表示 |
3.普通方法
下面代码是一些普通方法的使用例子
import java.io.File;
import java.io.IOException;
public class IoDemo1 {
public static void main(String[] args) throws IOException {
File file = new File("D:/手机照片备份/myphone_72089A8996EA/知乎");
System.out.println(file.getParent()); //上一级路径
System.out.println(file.getName()); //文件名字
System.out.println(file.getPath()); // 相对路径
System.out.println(file.getAbsolutePath()); //绝对路径
System.out.println(file.getCanonicalPath()); //修饰过的绝对路径
}
}
下面是方法的部分说明:
二、InputStream
1.方法
签名 | 说明 |
read() | 读取一个字节的数据,返回 -1 代表已经完全读完了 |
read(byte[] b) | 最多读取 b.length 字节的数据到 b 中,返回实际读到的数量;-1 代表以及读完了 |
read(byte[] b,int off, int len) | 最多读取 len - off 字节的数据到 b 中,放在从 off 开始,返回实际读到的数量;-1 代表以及读完了 |
close() | 关闭字节流 |
InputStream 只是一个抽象类,要使用还需要具体的实现类。关于 InputStream 的实现类有很多,基本可以认为不同的输入设备都可以对应一个 InputStream 类,我们现在只关心从文件中读取,所以使用FileInputStream
2.FileInputStream
构造方法:
签名 | 说明 |
FileInputStream(File file) | 利用 File 构造文件输入流 |
FileInputStream(String name) | 利用文件路径构造文件输入流 |
读取文件操作:
package io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class IODemo6 {
public static void main(String[] args) throws IOException {
// 这个过程, 相当于 C 中的 fopen , 文件的打开操作~~
// InputStream inputStream = null;
// try {
// inputStream = new FileInputStream("d:/test.txt");
// } finally {
// inputStream.close();
// }
try (InputStream inputStream = new FileInputStream("d:/test.txt")) {
// 读文件
// read 一次返回的是一个字节. 但是此处的返回值类型是 int !!!
while (true) {
int b = inputStream.read();
if (b == -1) {
// 读到末尾了, 结束循环即可
break;
}
System.out.printf("%x\n", b);
}
}
}
}
三、OutputStream
1.方法
签名 | 说明 |
write(int b) | 写入要给字节的数据 |
write(byte[]b)) | 将 b 这个字符数组中的数据全部写入 os 中 |
write(byte[]b, int off,int len) | 将 b 这个字符数组中从 off 开始的数据写入 os 中,一共写 len 个 |
close() | 关闭字节流 |
flush() | 我们知道 I/O 的速度是很慢的,所以,大多的 OutputStream 为了减少设备操作的次数,在写数据的时候都会将数据先暂时写入内存的一个指定区域里,直到该区域满了或者其他指定条件时才真正将数据写入设备中,这个区域一般称为缓冲区。但造成一个结果,就是我们写的数据,很可能会遗留一部分在缓冲区中。需要在最后或者合适的位置,调用 flush(刷新)操作,将数据刷到设备中。 |
2.FileOutputStream
构造方法:
签名 | 说明 |
FileOutputStream(File file) | 利用 File 构造文件输出流 |
FileOutputStream(String name) | 利用文件路径构造文件输出流 |
写入文件操作:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Scanner;
public class IODemo7 {
public static void main(String[] args) {
try (OutputStream outputStream = new FileOutputStream("f:/bb.txt ")){
outputStream.write(97);
outputStream.write(98);
outputStream.write(99);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
四、针对字符流对象进行读写操作
使用reader进行文件的读操作。
import java.io.*;
public class IODemo6 {
public static void main(String[] args) throws IOException {
try (Reader reader = new FileReader("F:/bb.txt" )){
while (true){
int b = reader.read();
if (b == -1){
break;
}
System.out.printf("%x\n", b);
}
}
}
}
使用write进行写操作
import java.io.*;
public class text {
public static void main(String[] args) throws IOException {
Writer writer=new FileWriter("D:/xxx.txt");
writer.write("123456");
writer.close();
}
}
以上就是这三个内容的概述,希望对你有帮助