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

要求用两个字节数组
用字节流

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

回一楼,就是不能用字符流啊

用字节流读包含中文的文件出现乱码是不可避免的,简单的想想:单第一个字为英文,第二个子为中文,而一个英文占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();
}
}
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-08

    首先获得一个文件句柄。File file = new File(); file即为文件句柄。两人之间连通电话网络了。接下来可以开始打电话了。

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

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

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

第2个回答  2010-03-04
用FileInputStream
第3个回答  2010-03-04
你把你的题目给我 我帮你做。

fileinputstream中文乱码
FileInputStream每次读取一个数组长度的字节时,读取的中文字节数可能是奇数,也就是只读到中文的一半字节,出现乱码。解决方法是:try{fis=newFileInputStream(file);InputStreamReaderreader=newInputStreamReader(fis,"GBK");\/\/最后的"GBK"根据文件属性而定,如果不行,改成"UTF-8"试试BufferedReaderbr...

在java中怎样处理中文乱码的问题?(有几种处理方式)
读取文件的时候如果是用的read方法(字节流),碰到中文输出就是乱码,然后存储的时候设置下编码为GBK或者是UTF-8形式即可,可以有效的解决乱码问题。可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。BufferedReader bre = null;try { String file = "D:\/test\/test.txt...

怎样用Java读取TXT文本乱码解决方案
使用文件流读取,转换编码为“UTF-16”,这样乱码问题就解决了。

用java 读取的txt文件为什么是乱码
解决办法:将文本文件编码方式修改为utf-8;java读文件的时候使用文本文件的编码方式读取,具体如何实现,请查阅资料。

java filechannel读取txt 乱码
乱码肯定是编码问题的原因,你首先检查下你生成的TXT是不是乱码,然后再检查读入后输出的是不是乱码,每个有关字符串编码的处理都可以用new String(otherString.getBytes("源编码集"),“目的编码集”);进行处理

用java读取txt文件中的中文写入数据库出现中文乱码,怎么解决?
1,设置下你数据库的编码,一般设置成UTF-8或者GBK或者GB2312 2,java读取TXT数据时可以转换下编码,再存进数据库,从数据库读取出来后显示时也同样的转换下编码,好像可以用个过滤器来弄的,

java 写入txt文件的中文乱码是怎么回事?
原因是写入时使用的字符编码和期望的不一致导致的。java工作区统一编码。统一为utf-8 这个就是输出流的编码问题吧?如果你在输出时指定好具体的编码,或者说指定跟原网页一直的编码。如果你期望写到文件中的汉字是 GBK编码,可以写文件时,将字符串准换成 GBK编码的byte[]。网页编码和输出流编码一致。

java利用RandomAccessFile类读txt出现乱码
那是由于文件的字符集编码的问题.要解决也不难.首先你要知道读取文件的字符集是什么如GBK或UTF8,然后在读取时加上字符集参数,输出时也加上字符集参数

java 写入txt文件的中文乱码是怎么回事?
因为JVM虚拟机启动时会因不同的参数使用不同的缺省字符编码。解决办法:如果你期望写到文件中的汉字是 GBK编码,可以:1、写文件时,将字符串准换成 GBK编码的byte[], 如: myios.write( "汉字".getBytes("GBK"));2、java 虚拟机启动时,增加 -DFile.encode=GBK 选项。

java解决中文乱码转码
具体解决方法可以分为以下几个方面:1. 确保源代码文件本身保存时使用的编码方式是正确的。在Java开发环境中,一般推荐使用UTF-8编码方式保存源代码文件。2. 在读取和写入文件时,需要指定正确的字符编码方式。例如,在使用Java读取和写入文本文件时,可以通过在FileInputStream和FileOutputStream上分别包装...

相似回答