FileWriter和BufferedWriter区别和用法(附加java书上7.4的题目!!)
2017年05月03日 15:43:04 sbsa_lc 阅读数:13410 标签: FileWriter和BufferedWjava书上7.4的题目 更多
个人分类: Java
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/Jerry_优快云_YZR/article/details/71124206
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
本文对比分析了FileWriter与BufferedWriter在Java文件写入中的性能差异,详细解释了BufferedWriter如何通过缓存机制提高写入效率,尤其是在处理大量数据和汉字时的优势。并附带了实际代码示例及常见问题解决方案。
2103

被折叠的 条评论
为什么被折叠?



