java字节流读txt文件出现乱码怎么解决?

要求用两个字节数组用字节流是不是要指定编码格式?题目就是用字节流读一篇txt文件,只能用两个字节的数组。回一楼,就是不能用字符流啊... 要求用两个字节数组
用字节流

是不是要指定编码格式?
题目就是用字节流读一篇txt文件,只能用两个字节的数组。

回一楼,就是不能用字符流啊
展开
 我来答
wwwqvod
推荐于2017-09-29 · TA获得超过307个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:286万
展开全部
用字节流读包含中文的文件出现乱码是不可避免的,简单的想想:单第一个字为英文,第二个子为中文,而一个英文占1一个字节,一个中文占两个字节,当你用两个字节的的数组读取,中文字就会被拆分,这样就肯定会出现乱码。

给你个解决方法,我用的JDK1.5,完全解决了你的需求,代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Start{
public static void main(String[] args){
File fileS = new File("E:/123.txt");
if(!fileS.exists()){
System.out.println ("找不到指定文件");
return;
}
FileInputStream fileIS = null;
try{
fileIS = new FileInputStream(fileS);
byte[] byt = new byte[2];

int data = fileIS.read(byt);
for (; data != -1 ; ){
int a=byt[0];
int b=byt[1];
if((a >= 0 && a <= 127) && (b > 127 || b < 0)){
System.out.print ((char)a);
data = fileIS.read();
byt[0] = (byte)b;
byt[1] = (byte)data;

}
String str = new String(byt);
System.out.print (str);
data = fileIS.read(byt);
}
System.out.println ();

}catch(FileNotFoundException ex){
ex.printStackTrace();
}catch(IOException ex){
ex.printStackTrace();
}finally{
if (fileIS != null) {
try{
fileIS.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
}
}
好嘛我是新来的
推荐于2017-10-08 · TA获得超过356个赞
知道小有建树答主
回答量:120
采纳率:100%
帮助的人:72.7万
展开全部
  1. 首先获得一个文件句柄。File file = new File(); file即为文件句柄。两人之间连通电话网络了。接下来可以开始打电话了。

  2. 通过这条线路读取甲方的信息:new FileInputStream(file) 目前这个信息已经读进来内存当中了。接下来需要解读成乙方可以理解的东西

  3. 既然你使用了FileInputStream()。那么对应的需要使用InputStreamReader()这个方法进行解读刚才装进来内存当中的数据

  4. 解读完成后要输出呀。那当然要转换成IO可以识别的数据呀。那就需要调用字节码读取的方法BufferedReader()。同时使用bufferedReader()的readline()方法读取txt文件中的每一行数据哈。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ih0qtq
2010-03-04 · TA获得超过172个赞
知道答主
回答量:144
采纳率:0%
帮助的人:101万
展开全部
用FileInputStream
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vk...d@163.com
2010-03-04 · TA获得超过137个赞
知道答主
回答量:217
采纳率:0%
帮助的人:85.6万
展开全部
你把你的题目给我 我帮你做。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式