A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于XINCHENG 中级黑马   /  2013-8-8 00:49  /  3312 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

移动了一下我刚发在22,23期的帖子,向大家请教一个问题,IO流的字节输出流,输入字母或数字(写出文件信息)时需要单引号进行修饰,但是经过单引号修饰的字母或数字为一个字符,还有一种方法就是将字符串转换为字节数组进行写入,为什么直接写出时的单位是字符,而转换成数组时的单位是字节FileOutputStream的write方法里,我查询API后没有发现可以直接写入字符的方法,这是怎么回事?

还有,论坛发帖的时候,怎么把代码块发上来的?代码块怎么存储?我用的是Eclipse,谢谢了!

1.png (14.5 KB, 下载次数: 44)

1.png

2.png (30.48 KB, 下载次数: 46)

FileOutputStream的write方法里,我查询API后没有发现可以直接写入字符的方法

FileOutputStream的write方法里,我查询API后没有发现可以直接写入字符的方法

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

3 个回复

倒序浏览
1,流的write中写入数字时,会在码表中查找相应的字符,但是如果码表中没有相对的字符,就会返回?字符
2,中文按照编码应该是占用至少两个字节的,你用'中'这样操作,只会取到一个字节,所以会乱码
回复 使用道具 举报
FileOutputStream的write方法可以传入字节数组,也可以传入int型整数,
当传入字节数组时,FileOutputStream会将字节数组中每个字节写入流关联的文件中;
当传入的是整数或者字符时,它会根据编码表去查该整数或者字符所对编码,然后写入到文件中,至于文件以什么样的形式展现出来还要通过编码表
发帖时插入代码如下图,点击尖括号,然后将代码粘贴到框框中:

S39%%P9A5IESZ99MLYJ3VMY.jpg (7.5 KB, 下载次数: 41)

S39%%P9A5IESZ99MLYJ3VMY.jpg

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
文件都是经过计算机默认或指定编码格式查表后存入的。
FileOutputStream是字节流,是没有写入字符的方法的,因为他是不能查表的。
换成数组楼主用的是字符串的  . getBytes()方法,返回的当然是字节数组了。
楼主在写入数字时打印出的正是 ASCII中对应的字母或符号。
楼主在写入“中”时,汉字不是字节不能用单引号‘’而应该用“”,具体汉字站几个字节要看用什么码表了。如果是GBK和GB2312的话,确实是两个字节,utf-8,这种编码规则就不一定是几个字节了,2个3个可能都有的,它是变字节的,(像老师讲的单纯“联通”,就会发成编码异常)。

至于传代码就点  <> 那个符号,然后写或贴进去就行。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马