用字节流读包含中文的文件出现乱码是不可避免的,简单的想想:单第一个字为英文,第二个子为中文,而一个英文占1一个字节,一个中文占两个字节,当你用两个字节的的数组读取,中文字就会被拆分,这样就肯定会出现乱码。

给你个解决方法代码如下:

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();

}

}

}

}

}

假如没有汉字,字节读取有时也会出现乱码,例如

写入:

try {

//用流写

FileOutputStream fileOutstr = openFileOutput("inFileTest", MODE_PRIVATE);

String nerong = "hello inFile";

fileOutstr.write(nerong.getBytes()); //写

fileOutstr.close(); //不要忘记关闭流

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

读取:

try {

FileInputStream fileInstr = openFileInput("inFileTest");

byte[] bs = new byte[100];

fileInstr.read(bs);

fileInstr.close();

//把结果打印到TextView中

t.setText(bs.toString); //结果出现乱码

//改为 //t.setText(new String(bs)); //就好

} catch (FileNotFoundException e) {

//

TODO Auto-generated catch block

e.printStackTrace();

} catch

(IOException e) {

//

TODO Auto-generated catch block

e.printStackTrace();

}

原因:

toString()的默认实现是打印对象类型+hashCode() [B表示byte数组

@表示之后的是地址 后面跟着的hashCode,其实就是其虚拟机地址.

但是使用new String()构造方法将byte[]转换为字符串得到的就会是一个根据字节数组内容构造的字符串。

java 字节乱码_Android/Java 字节读取出现乱码问题相关推荐

  1. java randomaccessfile 乱码_Java 8 RandomAccessFile 读取 UTF-8 乱码

    问题结论 为什么 RandomAccessFile 的 readLine() 读 UTF-8 文件是乱码? RandomAccessFile 的函数 readLine() 使用 ISO-8859-1 ...

  2. android java 中文乱码_android读写中文如何避免乱码详解

    前言 android读取文件中文出现乱码的原因无非就是,读取文件的字符格式与写如文件的格式不一致.因此,避免中文乱码,要在写入文件的时候按照一定的格式写入,读取的时候按照一定的格式读取.这样对应就不会 ...

  3. android 读取txt转为utf-8乱码,彻底解决android读取txt乱码终极方案

    解决android读取txt乱码 一,工具类FileUtil /** * 获取文件内容 * * @param filePath * @return */ public static String ge ...

  4. java 字节流乱码_java用字节流读取中文乱码怎么解决?

    首先,如果你明确的知道使用的编码,那么你可以在读取完毕生成字符串的时候直接指定编码. 例如: FileInputStream in = new FileInputStream("aaa.tx ...

  5. android java服务端_Android/Java从服务器端下载图片

    /** * 思想: 1.直接将所有数据安装字节数组发送 2.对象序列化方式 *//** * thread方式 * * @author Administrator */public class Test ...

  6. java android 服务器_Android/Java从服务器端下载图片

    /** * 思想: 1.直接将所有数据安装字节数组发送 2.对象序列化方式 *//** * thread方式 * * @author Administrator */public class Test ...

  7. java native内存_android java内存与native内存

    09-28 17:16:37.543: DEBUG/dalvikvm(21466): GC_EXTERNAL_ALLOC freed 390 objects / 45656 bytes in 50ms ...

  8. android平台java编程规范_Android Java类编写规范+优化建议

    本文仅是我个人在实际开发中习惯的编写方式,当然这种方式也是来自很多官方的推荐,所以在一定程度上是可以被模仿套用的.本文将不定期更新~ 零.指导原则 优先保证可读性,不要过分追求代码艺术和效率 在可读性 ...

  9. java mp4分割_Android(java方法)上实现mp4的分割和拼接 (二)

    这节谈一下如何在android上实现mp4文件的高效率切割. 业务需求举例:把一段2分钟的mp4文件切割出00:42 至 01:16这段时间的视频,要求足够短的执行时间和尽量少的误差. 分析:mp4P ...

最新文章

  1. Nibiru Open Day,OZO 遇见 DigiArtist 国际数字艺术展
  2. 荐书 | 10 本机器学习电子书,美版 Kindle 免费读
  3. 《JavaScript高级程序设计》笔记:变量、作用域和内存问题(四)
  4. Python(Windows)下安装各种库的多种方法总结--灵活使用pip
  5. Spring Boot属性配置文件详解
  6. 服务器上flash不显示动画,win10电脑在线预览不能加载flash
  7. [css] 移动端的布局用过媒体查询吗?写出例子看看
  8. 面试中如何剔除“鱼目混珠”程序员?
  9. iOS导航控制器和Segues
  10. js 中 ! + - ~ 符号和匿名函数
  11. 用react native 做的一个推酷客户端
  12. Microsoft Dynamics AX 2012
  13. 10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔...
  14. ReactNative实现仿微信或者通讯录快速索引功能
  15. 计算机CPU四大体系架构
  16. python基础之字符串(七)
  17. validation插件
  18. 蘑菇街的开源IM:TeamTalk
  19. PyTorch深度学习-跟着小土堆学习
  20. 垃圾渗滤液的形成过程!

热门文章

  1. bug经验-文件路径问题
  2. tomcat工作原理以及详解操作
  3. Character Studio
  4. deian   授权用户 sudo权限
  5. Android 三星手机不能调起应用市场
  6. css行内元素和块级元素
  7. jquery中的each不能结束外层的function
  8. vc++树状控件(TreeCtrl)用法
  9. String---Double 不依赖地域性的转换
  10. artTemplate模板引擎的源码拜读