社区
Java SE
帖子详情
为什么流操作的文本是不一样的?
dukcho
2004-09-08 01:52:13
你好,Java中使用流来对文件进行操作,把相同的字符串写入到文本中:
第一个用的是FileOutputStream:
fos.write(str.getBytes());
第二个用的是FileWriter:
fw.write(str);
这样的话,第一个写出的内容在记事本中打开为乱码;而第二个写出的内容打开则为原内容,这是为什么? 能详细解释一下么?我对此很是困惑!
...全文
271
10
打赏
收藏
为什么流操作的文本是不一样的?
你好,Java中使用流来对文件进行操作,把相同的字符串写入到文本中: 第一个用的是FileOutputStream: fos.write(str.getBytes()); 第二个用的是FileWriter: fw.write(str); 这样的话,第一个写出的内容在记事本中打开为乱码;而第二个写出的内容打开则为原内容,这是为什么? 能详细解释一下么?我对此很是困惑!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dukcho
2004-09-08
打赏
举报
回复
嗯,谢谢大家!
我一直困惑的是:我们通常所说的编码是说字符在内存中是如何表示的么?那么不同编码类型的字符保存到文件的时候有什么不同?
这个大家有什么不同的见解!
32zyc
2004-09-08
打赏
举报
回复
谢谢!
zypchina
2004-09-08
打赏
举报
回复
Windows 2000的默认编码格式是GBK
zypchina
2004-09-08
打赏
举报
回复
如果是编码的问题你就做一下编码转换
String test="内容";
byte[] dest=new String(test.getBytes(),"目的编码").getBytes("目的编码")
zypchina
2004-09-08
打赏
举报
回复
String test="测试";
File a = new File("c:/test.txt");
FileWriter fw = new FileWriter(a);
FileOutputStream fo = new FileOutputStream(a,true);
fw.write(test);
fw.flush();
fo.write(test.getBytes());
我在windows xp下测试没有问题啊.
dukcho
2004-09-08
打赏
举报
回复
能再详细说明一下为什么?
fos.write(str.getBytes("GB2312"));
是对的,而
fos.write(str.getBytes());
是错的么?
我知道是因为编码的原因,但是Windows2000内部默认不是Unicode么,为什么是GB2312哪?另外我们通常所说的编码是说字符在内存中是如何表示的么?那么不同编码类型的字符保存到文件的时候有什么不同?
谢谢大家参与,分数无所谓的,如果不够,可以另开!
karaling
2004-09-08
打赏
举报
回复
同意
nochess
2004-09-08
打赏
举报
回复
32zyc说的不对。OutputStream写入时用byte,但写到文件里还是文本。检查一下字符集。
32zyc
2004-09-08
打赏
举报
回复
OutputStream处理的是字节码,而Writer类处理的是字符,
或者可以说,前者写入的一般人是看不懂的,后者写入的人才能看懂
但前者的效率要搞
takecare
2004-09-08
打赏
举报
回复
fos.write(str.getBytes("GB2312"));
应该也是对的内容。
因为String是区域相关Locale的。
编码问题(Java的IO
流
为什么会有字节
流
和字符
流
)
Java的IO
流
为什么会有字节
流
和字符
流
首先明确字节
流
适用于任何场景,而且有字节缓冲
流
,能提高读取和输入的效率,也就是BufferedOutputStream/BufferedInputStream。其
操作
与字节
流
基本都一样。 而字符
流
是为了应对汉字出现的情况。在GBK中汉字占2个字节,在UTF-8中汉字占3个字节,所以我们通过字节
流
读取文件的时候一般都是逐个字节转换就会导致乱码,而手动去根据不同编码去拼接则不方便,所以有字符
流
。 这边再解释一下为什么使用字节
流
复制粘贴中文文件时不会乱码的原因: 不论是使
java中IO
流
复制
文本
出现null
1.遇到问题: 在对IO
流
进行
文本
复制时可能会出现前后复制出来的
文本
不一样,如下图。 java中IO
流
复制
文本
出现null,1.为什么会出现这个问题? 一般这个是出现了没有对文件的(输出)写入进行了限制 2.解决办法 给这个写入的文件加上限制就好了
流
的概念——
文本
流
和二进制
流
文本
流
和二进制
流
引用:http://www.zzzhe.com/Article/HTML/1140.html1. 什么是
流
? 在C中引入了
流
(stream)的概念。它将数据的输入输出看作是数据的
流
入和
流
出,这样不管是磁盘文件或者是物理设备(打印机、显示器、键盘等),都可看作一种
流
的源和目的,视他们为同一种东西,而不管其具体的物理结构,即对他们的
操作
,就是数据的
流
入和
流
出。这种把
Java 中 IO
流
分为几种?字符
流
和字节
流
的区别?java处理
流
的优点?BIO,NIO,AIO 有什么区别?
java 中 IO
流
分为几种? •按照
流
的
流
向分,可以分为输入
流
和输出
流
; •按照
操作
单元划分,可以划分为字节
流
和字符
流
; •按照
流
的角色划分为节点
流
和处理
流
。 Java Io
流
共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的联系, Java I0
流
的40多个类都是从如下4个抽象类基类中派生出来的。 •InputStream/Reader: 所有的输入...
二进制文件和
文本
文件到底有什么不同?(二)
1)
文本
文件:这类文件以
文本
的ASCII码形式存储在计算机中。它是以"行"为基本结构的一种信息组织和存储方式。 2)二进制文件:这类文件以
文本
的二进制形式存储在计算机中,用户一般不能直接读懂它们,只有通过相应的软件才能将其显示出来。二进制文件一般是可执行程序、图形、图像、声音等等。 C++标准库提供了基于输入/输出
流
机制的文件
操作
,叫做文件
流
(File Stream)。打开文件的时候,可以用参数制定按照二进制方式还是
文本
方式。 然而,可能与你的想象不同的是,这里的二进制或者
文本
与文件的格式并没有任.
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章