您的位置:首页 > 其它

FileReader与FileWriter使用一例

2009-04-29 21:23 441 查看
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以二进制方式处理,不会出现乱码现象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: