一)File类:
File类是java中的文件类,它即可以用来创建目录,也可以用来创建文件。java中所有的IO流都是针对文件的操作,所以,要想把javaIO学好,学扎实,强烈建议先将File学好。
二)FileInputStream/FileOutputStream:字节输入输出流:
这两个流是最低级的流,它们的读取是以字节的形式进行的。之后的字符流,缓冲流都是在它的基础上进行了包装,才更方便读取和写入字符。
同时,如果是读取非文档的内容时,比如像图片和视频,这两个流相当的好用。
FileInputStream fis = new FileInputStream(new File("path"));
FileOutputStream fos = new FileOutputStream (new File("path"));
不过对于流来说,很多的初学者对输入输出的概念容易搞混淆,下面我总结一下自己对流的理解吧:
1、我们应该站在内存的角度去看输入/输出
所谓输入流:就是读取文件内容,放入内存中,相对于内存来说,就是输入(也就是将文件内容输入到内存中)。所以我们要读取文件内容,应该使用FileInputStream(输入流)去将文件内容读入到内存,然后我们才能看到。
所谓输出流:就是写入文件内容,也就是将内存中的内容写入到文件中,相对于内存来说,就是输出。所以我们要写入文件时,应该使用FileOutputStream(输出流)去将内容写入到文件中,然后文件才会有内容。
三)InputStreamReader/OutputStreamWriter:字符输入输出流:
针对字符操作的输入输出流,可以直接读、写字符串。
InputStreamReader isr = new InputStreamReader(new FileInputStream(new File("path")));
OutputStreamWriter osw = new OutputStreamWriter (new FileOutputStream (new File("path")));
四)FileReader/FileWriter:字符输入输出流:它们是InputStreamReader/OutputStreamWriter的子类,功能更加的强大
这两个是对字符操作的流,我们不需要像操作字节那样子,读取字符和写入字符而要自己去一系列烦琐的操作,真的就可以读写。方便快捷。
FileReader fr = new FileReader(new FileInputStream(new File("path")));
FileWriter fw = new FileWriter(new FileOutputStream (new File("path")));
注意,FileWriter 还有一个很重要的功能就是,可以从文件末尾对文件内容的追加,只要在创建这个对象时,设置一下即可,如下:
FileWriter fw = new FileWriter(new FileOutputStream (new File("path")),true);//为true时,表示从文件末尾追加内容。
五)BufferReader/BufferWriter:具有缓冲的字符输入输出流:
它们也是对字符操作的高级流,它能一次性写入很多的内容,从而达到高效的目的,相当于数据库的的批处理一样。
BufferedReader br = new BufferedReader(new FileReader(new FileInputStream(new File("path"))));
BufferedWriter bw = new BufferedWriter(new FileWriter(new FileOutputStream (new File("path"))));
六)PrintWriter 打印输出流:也是一个高级流,用于打印,比较方便,其最大的特色就是可以设置自动刷新功能。还有格式化打印
PrintWriter pw = new PrintWriter(new FileOutputWriter(new FileOutputStream (new File("path"))));
最后,有一点要提醒大家,流一定记得要关闭,这样子才能释放资源,所以关闭流的操作最好放在finally中去操作。
原文地址:http://blog.csdn.net/u012149894/article/details/40857921