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); fis.close();
|
输出流
1 2
| FileOutStream fos=new FileOutStream(f); FileOutStream fos=new FileOutStream(f,true);
|
常用方法
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();
|
FileReader是不能手动设置编码方式的,为了使用其他的编码方式,只能使用InputStreamReader来代替。
1 2 3 4 5
| 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);
|
常用方法
PrintWriter
1 2
| FileWriter fw = new FileWriter(f); PrintWriter pw=new PrintWriter(fw);
|
常用方法
1 2
| pw.println("字符串"); pw.flush();
|
数据流
使用数据流的writeUTF()和readUTF() 可以进行数据的格式化顺序读写
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结合使用。