------- android培训、java培训、期待与您交流! ----------
一,首先附一个IO流的图解:
二,FileReader类:创建一个文件读取流对象,和指定名称的文件相关联。
注意点1,在使用的时候,要保证文件确实存在,否则会报FileNotFoundException的异常。
注意点2:这个类有read()方法一次读取一个字符,会自动往下读,读到文件尾返回值为-1。
注意点3:还有一个read(char[] cbuf)方法,会将读取的值存入cbuf数组,返回的是读到字符的个数。注意,如果数组长度小于文件长度的话,数组被存储满以后,将不再读取。
三,FileWriter类:
注意点1:在已有文件内容的文件尾续写内容,可以使用FileWriter(String fileName, boolean append)的方法。这个方法根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。fileName - 一个字符串,表示与系统有关的文件名;append - 一个 boolean 值,如果为true
,则将数据写入文件末尾处,而不是写入文件开始处。
例如:
FileWriter fr = new FileWriter("Demo.txt",true);
fr.write("abc");
fr.close;
利用上面的代码可以在Demo.txt文件中续写abc三个字符。
注意点2:文件的续写换行问题——windows的文件中,换行是由两个字符\r\n组成的。
例如:
FileWriter fr = new FileWriter("Demo.txt",true);
fr.write("abc\r\ndef");//这样在Demo.txt文件中续写两行,第一行为abc,第二行为def
fr.close;
四,文件的拷贝:
复制的原理:将c盘下的文件数据存储到d盘的一个文件中。
复制的步骤:1,在d盘创建一个文件,用于存储c盘文件中的数据。
2,定义读取流和c盘文件关联。
3,通过不断的读写完成数据存储。
4,关闭资源。
例如:
FileWriter fw = new FileWriter("a.txt");//创建目的地
FileReader fr = new FileReader("b.txt");//与已有文件关联
int ch= 0;
while((ch=fr.read())!=-1){
fw.writer(ch);
}
fw.close();
fr.close();
上面的例子,是一个一个字符的读取写入。
再如:
FileWriter fw = null;//养成编程的好习惯,局部变量要初始化
FileReader fr = null;
try{
fw = new FileWriter("a.txt");
fr = new FileReader("b.txt");
char[] buf = new char[1024];
int len = 0;
while((len = fr.read(buf))!=-1){
//fw.write(buf);//使用这个方法会把所有的字符写入a.txt,如果最后一次读取的字符不满1024,那么会有不正确的数据写到a.txt
fw.write(buf,0,len);//这个方法可以把有效字符写入a.txt
}
}
catch(IXException e){
throw new RuntimeEXception("读写失败");
}
finally{
//注意:关闭流的时候,要先进行判断流对象是否为空,因为如果前面在创建流的时候出现异常,到这里没有流对象,这时如果关闭会出错
if(fr != null) {
try{
fr.close();
}
catch(IXException e){
}
}
if(fw != null) {
try{
fw.close();
}
catch(IXException e){
}
}
}