File对象

1
2
File f=new File("path");
File f=new File("parent","child");

输入流

InputStream是字节输入流,同时也是抽象类,只提供方法声明,不提供方法的具体实现。
FileInputStream 是InputStream子类,以FileInputStream 为例进行文件读取。

1
FileInputStream fis=new FileInputStream();

常用方法

1
2
fis.read(b); //读取文件中的数据,保存到字节数组中,b为字节数组
fis.close(); //关闭输入流

输出流

1
2
FileOutStream fos=new FileOutStream(f);
FileOutStream fos=new FileOutStream(f,true); //第二个参数表示是否开启append拼接模式

常用方法

1
2
fos.write(b); //将字节数组中的数据,写入文件
fos.close(); //关闭输出流

字节流

使用字节数组存储字节流,实现写入。

1
byte[] b=new byte[(int)f.length()];

字符流

Reader字符输入流,Writer字符输出流,专门用于字符的形式读取和写入数据。

使用字符数组

1
char[] c = new char[(int) f.length()];

FileReader

FileReader 是Reader子类,以FileReader 为例进行文件读取

1
FileReader fr=new FileReader(f);

常用方法

1
2
fr.read(c); //将字符流写入字符数组
fr.close();

FileWriter

1
FileWriter fw=new FileWriter(f);

常用方法

1
2
fw.read(c); //将字符流写入字符数组
fw.close();

InputStreamReader

FileReader是不能手动设置编码方式的,为了使用其他的编码方式,只能使用InputStreamReader来代替。

1
2
3
4
5
//使用InputStreamReader读取UTF-8编码的文本文件
FileInputStream fis=new FileInputSteam(f);
char[] c=new char[(int)f.length()];
InputStreamReader isr = new InputStreamReader(new FileInputStream(f),Charset.forName("UTF-8") ;
isr.read(c);

缓冲流

字节流和字符流的弊端
在每一次读写的时候,都会访问硬盘。 如果读写的频率比较高的时候,其性能表现不佳。

为了解决以上弊端,采用缓存流。
缓存流在读取的时候,会一次性读较多的数据到缓存中,以后每一次的读取,都是在缓存中访问,直到缓存中的数据读取完毕,再到硬盘中读取。

BufferedReader

缓存流必须建立在一个存在的流的基础上

1
2
FileReader fr = new FileReader(f);
BufferedReader bf=new BufferedReader(fr);

常用方法

1
bf.readline(); //一次读入一行

PrintWriter

1
2
FileWriter fw = new FileWriter(f);
PrintWriter pw=new PrintWriter(fw);

常用方法

1
2
pw.println("字符串"); //一次写入一行
pw.flush(); //立即把数据写入到硬盘

数据流

使用数据流的writeUTF()和readUTF() 可以进行数据的格式化顺序读写

DataInputStream

1
2
FileInputStream fis  = new FileInputStream(f);
DataInputStream dis =new DataInputStream(fis);

常用方法

1
2
3
boolean b= dis.readBoolean();
int i = dis.readInt();
String str = dis.readUTF();

DataOutputStream

1
2
FileOutputStream fos  = new FileOutputStream(f);
DataOutputStream dos =new DataOutputStream(fos);

常用方法

1
2
3
dos.writeBoolean(布尔值);
dos.writeInt(整数);
dos.writeUTF("字符串");

对象流

对象流指的是可以直接把一个对象以流的形式传输给其他的介质,比如硬盘。

一个对象以流的形式进行传输,叫做序列化。 该对象所对应的类,必须是实现Serializable接口

System.in

用于获取控制台输入,常常与Scanner结合使用。