查了好多资料,发现还是不全,干脆自己整理吧,至少保障在我的做法正确的,以免误导读者,也是给自己做个记录吧!
IO流:
IO流用来处理设备之间的数据传输。
Java对数据的操纵是通过流的方式。
Java用于操纵流的对象都在IO包中。
流按照操纵数据分为两种:字节流与字符流。
流按照流向分为:输出流,输入流。
字节流的抽象基类:InputStream,OutputStream
字符流的抽象基类:Reader,Writer。
这四个基类派生出来的子类名称都是以其父类名作为子类名的后缀。前缀名一般都是该流对象的功能。
FileWriter类:该类主要是操纵文件的。
一般流程:
1.创建一个FileWriter对象。该对象一被初始化就必须要明确被操纵的文件。而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。FileWriter fw = new FileWriter("demo.txt");//可以传递一个true参数,代表不覆盖已有的文件,并在已有文件的末尾处停止数据续写。
2.调用write方法,将字符串写入到流中。Fw.write("abcde");
3.刷新流对象中的缓冲中的数据。将数据刷到目的地中。fw.flush();
4.关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。将数据刷到目的地中。和flush的区别:flush刷新后,流可以继承应用,closeshuaxin后,会将流关闭。
FileReader:
1.创建一个文件读取流对象,和指定名称的文件相关联。要保障该文件是已存在的,如果不存在,会产生FileNotFoundException异常。
2.【方法一】调用读取流对象的read方法。一次读一个字符。而且会主动往下读。
2.【方法二】定义一个字符数组。用于存储独到字符。该read(char[])返回的hi读到字符个数。
文件复制的过程图:
--------------------------------------------------------------------------------------
缓冲区
缓冲区的涌现进步了对数据的读写效率。
对应类:bufferedwrite bufferedreader
缓冲区要结合流才可以应用。
在流的基础上对流的功能停止了增强。所以在创建缓冲区之前,必须要现有流对象。
只要将需要被进步效率的流对象作为参数传递给缓冲区的构造函数即可。
关闭缓冲区就是在关闭缓冲区中的流对象。该缓冲区中供给了一个跨平台的换行符(newline)。
import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; public class BufferedDemo { /** * 缓冲区写入演示 */ public static void main(String[] args) { BufferedWriter bw=null; try { bw=new BufferedWriter(new FileWriter("abc.txt")); for(int x=0;x<=4;x++) { bw.write("abcd"+x); bw.newLine();//写入一个行分隔符 } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if(bw!=null) bw.close(); } catch (IOException e) { e.printStackTrace(); } } } }
字符读取流缓冲区:该缓冲区供给了一个一次读一行的方法readLine,方便于对文本数据的获得。当返回null时,表现独到文件末尾。
readLine方法返回的时候只返回回车符之前的数据内容。并不返回回车符。
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.LineNumberReader; public class LineNumberReaderDemo { /** * 带行号的缓冲区流 */ public static void main(String[] args) { LineNumberReader lnr=null; try { lnr=new LineNumberReader(new FileReader("BufferedDemo.java")); lnr.setLineNumber(1); String line=null; while((line=lnr.readLine())!=null) { System.out.println(lnr.getLineNumber()+" "+line); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if(lnr!=null) lnr.close(); } catch (IOException e) { e.printStackTrace(); } } } }
文章结束给大家分享下程序员的一些笑话语录: 《诺基亚投资手机浏览器UCWEB,资金不详或控股》杯具了,好不容易养大的闺女嫁外国。(心疼是你养的吗?中国创业型公司创业初期哪个从国有银行贷到过钱?)