这段代码看不懂,谁来解释下?

guan_tu 2013-11-02 03:40:16

public class Test {
private static Logger logger = Logger.getLogger(Test.class.getName());

public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("1.txt");
String str = "hello world 欢迎您!";
fos.write(str.getBytes());
FileInputStream fis = new FileInputStream("1.txt");
while (fis.available() > 0) {
System.out.println((char) fis.read());
}

}

}
fos.write(str.getBytes());这句代码我已经将字符串转换为字节了,可是为什么打开1.txt时,显示的还是字符串,还有循环中的System.out.println((char) fis.read());这句代码,为什么最后的 “欢迎您”显示的时候为乱码?不要告诉我使用FileReader这个类能够正确读取文本中的内容,那个我也会使用,我想知道的是这段代码中字节和字符到底经历过了那几次转换,我需要的是这方面的解释,谢谢!
...全文
140 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hm92814 2013-11-02
  • 打赏
  • 举报
回复
可以设置一下编码方式,应该是编码方式不一样。
Lsheep 2013-11-02
  • 打赏
  • 举报
回复
整个过程如下: 首先“欢迎您”这几个中文是按照java默认的编码方式(因为你没有指定编码)编码后存进String的,String的getBytes()拿到的就是编码后的字节码; 然后你创建了一个面向字节的输出流把这个String的bytes存进去; 接着你又创建了一个面向字节的输入流把从刚才的那个文件吧这些字节读入,一个一个字节的打印出来,英文占一个字节当然没问题,但中文编码后占不止一个字符,输出的当然是乱码了。 所以你可一用一个如InputStreamReader的类从文件中读数据,显示就没问题了。 建议楼主去学习一下字节流和字符流相关的知识

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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