FileReader与FileWriter使用一例

来源:互联网 发布:红色警戒找矿软件 编辑:程序博客网 时间:2024/05/22 00:37

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.HashMap;

/**
 * 测试文件读取
 * @author Administrator
 *
 */
public class FileTest {
 public static void main(String[] args){
  try {
   //String teststr=test();
   FileWriter fw = new FileWriter("c:/test.txt");
   BufferedWriter bw = new BufferedWriter(fw);

   bw.write("我爱大海,我爱蓝天;我爱大海,我爱蓝天/r/n");
   bw.write("我爱大海,我爱蓝天;我爱大海,我爱蓝天/r/n");
   bw.flush();
   fw.close();
   bw.close();
   //逐行读取文件
   FileReader fr = new FileReader("c:/test.txt");
   BufferedReader br = new BufferedReader(fr);
   String strline =br.readLine();
   System.out.println(strline);
   fr.close();
   br.close();
   //整个读取文件
   FileInputStream fis = new FileInputStream("c:/test.txt");
   byte[] bt =new byte[1024];
   fis.read(bt);
   fis.close();
   String filestr = new String(bt);
   filestr =filestr.trim();
   HashMap HZ = new HashMap();
   for(int i=0;i<filestr.length();i++){
    String temp =filestr.substring(i,i+1);
    if(HZ.containsKey(temp)){
     int cs =Integer.valueOf(HZ.get(temp).toString());
     HZ.put(temp, cs+1);
    }else{
     HZ.put(temp, 1);
    }
   }
   HZ.toString();
   System.out.println(HZ.toString());
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }}

 

 

在文件读取中可以使用FileReader和FileInputStream两个类这两个类的区别为

FileInputStream是以字节流方式读取,FileReader是把文件转换为字符流读入。InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。用Reader读取出来的是char数组或者String,使用InputStream读取出来的是byte数组

 

FileInputStream类以二进制输入/输出,I/O速度快且效率高,但是它的read()方法读到的是一个字节(二进制数据),很不利于人们阅读。而FileReader类弥补了这个缺陷,可以以文本格式输入或输出,非常方便。例如,可以使用while((ch=filereader.read())!=-1)循环来读取文件;可以使用BufferedReader的readLine()方法一行一行的读取文本。

 

FileReader与InputStreamReader涉及编码转换(指定编码方式或者采用操作系统默认编码)时,可能在不同的平台上出现乱码现象。而FileInputStream以二进制方式处理,不会出现乱码现象。