流的那些事-Read-Writr
1 file是可以获取文件的属相,但是无法读取和写入文件,有一种东西可以读和写文件,那就是流。流是指一连串流动的字符,是以先进先出的方式发送和接受数据的通道。
2 按照流的方向可以分为输入流和输出流。
3 按照处理的方式划分为字节流和字符流。
我们先来看一下字节流是如何读取的。
package file; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class FileInputStreamTest { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub //创建对象并制定路径 FileInputStream file=new FileInputStream("/Users/apple/Documents/tes.txt"); FileOutputStream fos=new FileOutputStream("/Users/apple/Documents/tes.txt"); String worlds="我的青春我做主"; byte[]w=worlds.getBytes(); fos.write(w); System.out.println("写入成功"); byte[]b=new byte[1024];//设立缓存区 int date; while((date=file.read())!=-1){ file.read(b); String str=new String(b,0,date);//接受读取的字节 System.out.println(str); } file.close();//关流 fos.close();//关流å } }
通过上面的代码大家应该清楚了,字节流的读和写,但是还需要注意一点,在向文件写数据的时候讲覆盖文件中原有的内容。
字符流的读和写
package reader; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.io.Writer; public class ReaderTest { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub // 创建读的对象 Reader r = new FileReader("/Users/apple/Documents/tes.txt"); BufferedReader br = new BufferedReader(r); // 创建写的对象 Writer f = new FileWriter("/Users/apple/Documents/tes.txt"); BufferedWriter bw = new BufferedWriter(f); bw.write("你好");// 写入内容 bw.write("明天"); bw.flush(); bw.close(); f.close(); // 读取一行 String lin = br.readLine(); // 循环读取 while (lin != null) { System.out.println(lin); lin = br.readLine(); } } }
需要提醒的一点是,BufferedReader,BufferedWriter, 都自带缓存区。别忘了刷新缓存