java字节流读txt文件出现乱码怎么解决?
要求用两个字节数组用字节流是不是要指定编码格式?题目就是用字节流读一篇txt文件,只能用两个字节的数组。回一楼,就是不能用字符流啊...
要求用两个字节数组
用字节流
是不是要指定编码格式?
题目就是用字节流读一篇txt文件,只能用两个字节的数组。
回一楼,就是不能用字符流啊 展开
用字节流
是不是要指定编码格式?
题目就是用字节流读一篇txt文件,只能用两个字节的数组。
回一楼,就是不能用字符流啊 展开
4个回答
展开全部
用字节流读包含中文的文件出现乱码是不可避免的,简单的想想:单第一个字为英文,第二个子为中文,而一个英文占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();
}
}
}
}
}
给你个解决方法,我用的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();
}
}
}
}
}
展开全部
首先获得一个文件句柄。File file = new File(); file即为文件句柄。两人之间连通电话网络了。接下来可以开始打电话了。
通过这条线路读取甲方的信息:new FileInputStream(file) 目前这个信息已经读进来内存当中了。接下来需要解读成乙方可以理解的东西
既然你使用了FileInputStream()。那么对应的需要使用InputStreamReader()这个方法进行解读刚才装进来内存当中的数据
解读完成后要输出呀。那当然要转换成IO可以识别的数据呀。那就需要调用字节码读取的方法BufferedReader()。同时使用bufferedReader()的readline()方法读取txt文件中的每一行数据哈。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用FileInputStream
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把你的题目给我 我帮你做。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询