FileWriter和BufferedWriter区别和用法(附加java书上7.4的题目!!)

FileWriter和BufferedWriter区别和用法(附加java书上7.4的题目!!)

2017年05月03日 15:43:04 sbsa_lc 阅读数:13410 标签: FileWriter和BufferedWjava书上7.4的题目 更多

个人分类: Java

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Jerry_CSDN_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        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

    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

     result[row] = Double.parseDouble(temp[j]);

    }

 

 

 

那么用BufferedWriter就会很方便:(而且还不用考虑换行是\t? \n? or \t\n? )

摊手。。。。

 

//逐行输入数据,一定要逐行哦,不能输在同一行!!!

  for(inti=0;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的作业题:

 

 
  1. import java.io.BufferedReader;

  2. import java.io.BufferedWriter;

  3. import java.io.File;

  4. import java.io.FileReader;

  5. import java.io.FileWriter;

  6. import java.io.IOException;

  7. import java.io.InputStreamReader;

  8. import java.util.Arrays;

  9. import java.util.Scanner;

  10.  
  11. public class Writers {

  12.  
  13. public static void main(String[] args) throws IOException {

  14. int n = 5; //N*N数组

  15. int[] score = new int[n]; //插入的数组

  16. double[] result = new double[n];; //读取出的数组

  17. Scanner f_in = new Scanner(System.in);

  18. String str;

  19.  
  20. System.out.println("请输入学生的成绩:");

  21.  
  22. InputStreamReader isr=new InputStreamReader(System.in);

  23. BufferedReader br=new BufferedReader(isr);

  24. File file = new File("data.txt"); //存放数组数据的文件

  25. FileWriter out = new FileWriter(file); //文件写入流

  26. BufferedWriter bw=new BufferedWriter(out);

  27.  
  28. //逐行输入数据,一定要逐行哦,不能输在同一行!!!

  29. for(int i=0;i

 

 

你可能感兴趣的:(Oracle)