java读取二进制文件的问题

52qhy 2011-03-16 03:47:37
我使用FileInputStream 从一个.dat二进制文件读取内容,并用FileOutputStream的write(bytes,0,len)方法将其写入另外一个二进制文件,文件的其他部分都是对的,但是遇到有中文的部分都不对,用UE打开两份文件对照,中文部分的十六进制代码是不相同的,请问为什么会出现这样的情况,我将文件读进byte数组后没有对数组进行任何操作直接写入文件的,为什么中文部分写不对呢?
...全文
809 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
whut_lcy 2011-03-16
  • 打赏
  • 举报
回复
一个中文字符两个字节。注意这里
wenbodong 2011-03-16
  • 打赏
  • 举报
回复
如果你没改过的话,是不会不一样的.
把代码贴出来看看.
楼上某个大哥说Java用默认编码方式来转的.这是错误的.你直接读写字节,Java怎么可能转换.如果说要转换的话,那是你用读取的字节去赋给一个String,这时才会涉及到编码及解码的问题.
Thinking01 2011-03-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 52qhy 的回复:]

我的目的是将源文件的二进制代码一摸一样的写入到目的文件的二进制代码,而不希望有任何变化
[/Quote]
代码贴上来看一下
来得查理 2011-03-16
  • 打赏
  • 举报
回复
BufferedStreamReader bsr = new BufferedStreamReader(new FileInputStream ("a.dat"))
52qhy 2011-03-16
  • 打赏
  • 举报
回复
我的目的是将源文件的二进制代码一摸一样的写入到目的文件的二进制代码,而不希望有任何变化
52qhy 2011-03-16
  • 打赏
  • 举报
回复
.dat不是文本文件,是个二进制文件
52qhy 2011-03-16
  • 打赏
  • 举报
回复
如何解决呢,只要写入的文件跟源文件二进制一样就可以
ladofwind 2011-03-16
  • 打赏
  • 举报
回复
如果.dat是个文本文件,那就用FileReader吧, 用字节方式读实际还是会用默认编码方式来转的
runer 2011-03-16
  • 打赏
  • 举报
回复
java内部做了隐式转码
前导课程:      《Java工程师系列课程》前4部 课程内容:           本课程是《Java工程师系列课程》的第8部分,深入讲解Java文件和IO流的相关知识。以下是本课程的内容展示:课程共69个小节,分为三个大部分:分别是文件部分、流部分和实战项目部分。文件部分,就是左上角用红框框起来的这一部分,主要讲解对文件以及文件夹的操作,第二部分就是课程最重要的部分,也是占课程比例最大的流部分,所谓流就是用来读写数据的类。本课程用45小节的时间为学员详细讲解各种流的使用方法以及注意事项。第三部分是实战项目部分,就是右下角用蓝色方框框起来的部分,在这一部分中,将为大家讲解如何用swing技术配合课程中学习的IO流去完成一个记事本项目。实际上,除了课程最后的这记事本项目,课程中还穿插了一些规模比较小的实战项目,比如分割文件、合并文件、给文件加密这样的小项目,以及压缩和解压文件项目。课程特点:1、讲解详细:不仅仅详细讲解了文件和流的各种用法,还讲解了很多使用过程中需要注意的细节。2、干货足量:每一个小节的时长基本都超过了20分钟,能让学员学到很多知识。3、深入解决实际问题:视频课程不仅讲解理论知识,还深入解决了很多实际问题,例如:讲解如何通过程序判断一个文件的编码格式、如何设置文件读写权限等4、讲解经典算法:例如讲解缓冲区的管理机制,能让学员学到前辈们的精华思想5、理论结合实践:课程在文件压缩和解压、文件分割以及合并、文件加密,这些小节都配有对应的实战项目,最后还有一个规模比较大的记事本项目6、手写代码:全程手写代码完成项目预期效果:      认真学习完本课程,学员可以深入掌握Java语言操作和管理磁盘文件的技术以及通过流读写数据的技术,实实在在提高实战水平,完成从菜鸟到高手的华丽转变。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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