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

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
   
   

 

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值