FileWriter和BufferedWriter区别和用法
两个都可以作为写入的流,那么两个的区别在哪里呢?
1) 首先,如果要使用BufferedWriter,一定会要用到FileWriter
毕竟它是以FileWriter为parameter(参数)的!
Public BufferedWriter(Writerout)
Public BufferedWrieter(Writerout , int sz)
2) 使用的BufferedWriter的效率要比FileWriter高很多
原因很简单,前者有效的使用了缓存器
将缓存写满以后(或者close以后)才输出到文件中
然而后者是没写一次数据,磁盘就会进行一次写操作,性能差得一匹
3) 也是我坚持用BufferedWriter的原因:
它在写汉字或者数字的时候一般不会出现太大问题
反之,FileWriter就会会很坑!!!!
突然发现用BufferedWriter后来如果要代码中输入整形的时候,还是要加个\t......一脸们比
FileWriter out = new FileWriter(file); //文件写入流
BufferedWriter bw=new BufferedWriter(out);
for(int i=0;i<n;i++){
bw.write((int)result[i] + "\t");
bw.newLine();
}
bw.close();
out.close();
FileWriter从类OutputStreamWriter继承的
1、public void write(int c) throws IOException
c - 指定要写入字符的ASCII。
这里data数组中的整数是作为字符的ASCII,最终显示的是ASCII值为这些的字符,并不是这些数字本身。
要显示这些数字本身,可改为:
fos.write(String.valueOf(data[i]));
注意valueOf()方法的大小写。
或者用\t分割:
//将数组中的数据写入到文件中。每行各数据之间TAB间隔
for(int i=0;i<n;i++){
out.write(score[i]+"\t"); //每行数据之间一定要用tab间隔,否则会出现乱码
out.write("\r\n");
}
out.close();
BufferedReader in= new BufferedReader(new FileReader(file)); //
String line; //一行数据
int row=0;
//逐行读取,并将每个数组放入到数组中
while((line = in.readLine()) != null){
String[] temp = line.split("\t");
for(int j=0;j<temp.length;j++){
result[row] = Double.parseDouble(temp[j]);
}
那么用BufferedWriter就会很方便:(而且还不用考虑换行是\t? \n? or \t\n? )
摊手。。。。
//逐行输入数据,一定要逐行哦,不能输在同一行!!!
for(inti=0;i<n;i++){
str = br.readLine();
bw.write(str);
bw.newLine();
}
BufferedReader in =new BufferedReader(new FileReader(file)); //
String line; //一行数据
introw=0;
//逐行读取,并将每个数组放入到数组中
while((line =in.readLine()) !=null){
result[row] = Double.parseDouble(line);
row++;
}
in.close();
附加代码:
一道7.4的作业题:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;
public class Writers {
public static void main(String[] args) throws IOException {
int n = 5; //N*N数组
int[] score = new int[n]; //插入的数组
double[] result = new double[n];; //读取出的数组
Scanner f_in = new Scanner(System.in);
String str;
System.out.println("请输入学生的成绩:");
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
File file = new File("data.txt"); //存放数组数据的文件
FileWriter out = new FileWriter(file); //文件写入流
BufferedWriter bw=new BufferedWriter(out);
//逐行输入数据,一定要逐行哦,不能输在同一行!!!
for(int i=0;i