简单文件读写问题,为何部分汉字会变成??

chenyifei211 2007-10-31 10:49:56
如题,不是全部汉字,而是部分几个会变成??号,真搞不明白,请指点,源代码:
package ch01;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class LogFile {

/**
* @param args
*/
public String downloadFile(File file){
StringBuilder sb=new StringBuilder();
String string=new String();
try {
FileInputStream fis=new FileInputStream(file);
byte[] buf = new byte[1024];

while((fis.read(buf))!=-1){
sb.append(new String(buf,"utf-8"));
buf=new byte[1024];//重新生成,避免和上次读取的数据重复


}
} catch (FileNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
string=sb.toString();

return string;
}

public static void main(String[] args) {

LogFile lf=new LogFile();
String st=lf.downloadFile(new File("IMDB0100_MFC01.log"));


BufferedWriter bw;
try {
bw = new BufferedWriter(new FileWriter("foo.test"));

bw.write(st);
bw.close();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}


}

}

需处理的文件请参考附件
...全文
187 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenyifei211 2007-10-31
  • 打赏
  • 举报
回复
说的好像有点道理,呆会用字符流试试看看
「已注销」 2007-10-31
  • 打赏
  • 举报
回复

FileInputStream fis=new FileInputStream(file);
byte[] buf = new byte[1024];

while((fis.read(buf))!=-1){//这里的问题
//如果有个中文字符,正好被你在1024这里分开了,那new String的时候,不是就解析不出来了么?
sb.append(new String(buf,"utf-8"));
buf=new byte[1024];//重新生成,避免和上次读取的数据重复


}



读取字符内容,要么全部按字节读取,然后转字符串,要么按字符流读取
TYRO729 2007-10-31
  • 打赏
  • 举报
回复
4楼好办法,哈哈,在流入的时候就先转好码
TYRO729 2007-10-31
  • 打赏
  • 举报
回复
我用lz的这个,自己写了个.log文件结果生成的新文件里面所有中文都是???????,把转码那改成gbk的就正常了,lz试试看
chenyifei211 2007-10-31
  • 打赏
  • 举报
回复
终于可以揭帖了,等了一个下午,呵呵
chenyifei211 2007-10-31
  • 打赏
  • 举报
回复
piaopiao11 果然可以,这个方法不错,呵呵,谢谢,揭帖
piaopiao11 2007-10-31
  • 打赏
  • 举报
回复
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(file),"utf8"));

可以这样 读过后就不要在做转换了
chenyifei211 2007-10-31
  • 打赏
  • 举报
回复
按照字符流读取仍然出现? 请问是何原因,谁能提供正确的代码,我的代码如下
package ch01;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class LogFile {

/**
* @param args
*/
public String downloadFile(File file){
StringBuilder sb=new StringBuilder();
String string=new String();
try {

BufferedReader buffer=new BufferedReader(new FileReader(file));
while((string=buffer.readLine())!=null){
string=new String(string.getBytes(),"utf-8");
sb.append(string);
}


} catch (FileNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
string=sb.toString();

return string;
}

public static void main(String[] args) {

LogFile lf=new LogFile();
String st=lf.downloadFile(new File("IMDB0100_MFC01.log"));


BufferedWriter bw;
try {
bw = new BufferedWriter(new FileWriter("foo.test"));

bw.write(st);
bw.close();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}


}

}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧