这次用的是字符流来读写,FileReader和FileWriter 这里要注意的是在写的时候要去刷缓存,不然不会显示。但是我们也可以用关流来让系统自动调用一次刷缓存,当我们关流后就不能再进行写入操作了,否则会出异常的换行/windows 用\r\n 但是linux用\n我们也可以系统获得换行符如private static String Line_Sparator=System.getProperty("line.separator");来获得相应的换行符。这里结合之前学过的关流模板进行完整的用字符流异常处理的模板代码。以及演示字符流的读取(循环读到文件末尾) -----一块块地读,效率更高——就是用一个char类型的数组然后System.out.print(new String(buf,0,len));,与之前的提到过的用System.out.print((char)buf[i])是相似的。好了,本次的知识点就这么多了。今天头有点晕了,偷点懒,嘻嘻
下面和之前的一样 上代码:
package cn.hncu.io2;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.filechooser.FileFilter;
public class MyFilerReaderWriter {//用字符流写数据时要注意刷缓存
private static String Line_Sparator=System.getProperty("line.separator");//利用系统 属性来获得相应的换行符
private static void write2File() throws IOException {
FileWriter fw=new FileWriter("a.txt");
fw.write("adfadjk");
// fw.flush();//刷缓存 否则数据不写出
fw.write("\r\n湖南城市学院");//windows 用\r\n 但是linux用\n
//综上,无论是windows还是Linux,“\r\n”都会换行
fw.write("我编程我快乐"+Line_Sparator+"每天进步一点点");
fw.close();//关流时系统会自动掉用fw.flush.
//流一旦关闭,就不能再写了,否则会出异常的
}
//用字符流异常处理的模板代码
private static void write2File2() {
FileWriter fw=null;
try {
fw=new FileWriter("e:/abc/a/ae.txt");
fw.write("随便输");
fw.flush();
} catch (IOException e) {
System.out.println(e.toString());
}finally{
if(fw!=null){
try {
fw.close();
} catch (IOException e) {
throw new RuntimeException("关流失败");
}
}
}
}
//演示字符流的读取(循环读到文件末尾) 字符流读取时不用flush,写要
private static void readFromFile() {
FileReader fr=null;
try {
fr=new FileReader("e:/abc/a/ae.txt");
int ch=0;
while((ch=fr.read())!=-1){
System.out.print((char)ch);
}
} catch (IOException e) {
}finally{
if(fr!=null){
try {
fr.close();
} catch (IOException e) {
throw new RuntimeException("关流失败");
}
}
}
}
//演示字符流的读取(循环读到文件末尾) -----一块块地读,效率更高
private static void readFromFile2() {
FileReader fr=null;
try {
fr=new FileReader("e:/abc/a/ae.txt");
char buf[]=new char[1024];
int len=0;
while((len=fr.read(buf))!=-1){
System.out.print(new String(buf,0,len));
}
} catch (IOException e) {
}finally{
if(fr!=null){
try {
fr.close();
} catch (IOException e) {
throw new RuntimeException("关流失败");
}
}
}
}
public static void main(String[] args) {
// try {
// write2File();
// write2File2();
// readFromFile();
// } catch (IOException e) {
// e.printStackTrace();
// }
readFromFile2();
}
}