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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yinxjfly 高级黑马   /  2014-7-1 14:46  /  1723 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;
class StreamTest
{
        public static void main(String[] args) throws IOException
        {
                FileInputStream fis=new FileInputStream("C:\\Users\\dell\\Desktop\\StuIfo.txt");
                FileOutputStream fos=new FileOutputStream("C:\\Users\\dell\\Desktop\\StuIfo(复制).txt");

                /*FileInputStream fis=new FileInputStream("C:\\Users\\dell\\Desktop\\9.jpg");
                FileOutputStream fos=new FileOutputStream("C:\\Users\\dell\\Desktop\\9(复制).jpg");*/


                int by=0;
                while((by=fis.read())!=-1)
                {
                        fos.write(by);
                }
               
                fis.close();
                fos.close();
        }
}

问题是:字节文件读取流为什么也可以复制纯文本文件(StuIfo.txt文件中包含中文和英文)?
懂得朋友指导一下哈!!

点评

这个帖子一直没人回答!版主能帮忙推广一下嘛?  发表于 2014-7-3 12:47

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

15 个回复

倒序浏览
晕.....!
怎么就没有马友回帖呢!
求扩散!
高手们都出来露一手啊!
回复 使用道具 举报
在电脑上的什么都是字节吧
回复 使用道具 举报
luheqi 来自手机 中级黑马 2014-7-1 20:02:54
板凳
字节读取和写入是没限制的,一切都是以二进制存储的,字节就是最小单位了
回复 使用道具 举报
这应该与对应的编码表有关,字节流是读一个字节保存一个字节,字符流是先读取一个字节之后保存在缓冲区,等到读到两个字节查编码表再保存。
纯文本的时候用字符流,其它情况使用字节流。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
字符流也是以字节流我基础的
回复 使用道具 举报
Whero 发表于 2014-7-1 21:04
这应该与对应的编码表有关,字节流是读一个字节保存一个字节,字符流是先读取一个字节之后保存在缓冲区,等 ...

你的会回答被加分了!哈哈!
回复 使用道具 举报
字节流可以读取任意文件。不过用字符流处理纯字符文件对于程序员来说更便捷
回复 使用道具 举报
suiyunyuan 发表于 2014-7-3 13:14
字节流可以读取任意文件。不过用字符流处理纯字符文件对于程序员来说更便捷 ...

是的!这个毕姥爷在IO的视频后期代码中有体现,哈哈!
我只是想知道准确的原因!
回复 使用道具 举报
这个问题很简单的啊:
1.计算机存储的可识别的文件都是以二进制也就是0和1的形式存储的。
2.字节流能读取所有的文件是因为它操作的是字节,也就是0和1,是底层的数据。
3.字符流专门用于操作纯文本文件,主要是因为他底层封装了字节转换流和编码表,如果不指定编码表会默认使用本机的编码表。其实是字符流依照面向对象的思想内部封装了字节流的操作和对照编码表的过程,提高的代码的效率。
然后楼主的问题就很好解决了,字节流不管读取什么文件都是没有问题的,它读到的只是字节(0和1),然后在记事本打开的时候,会自动对照编码表翻译并显示的,否则就是一堆乱码了!!!
回复 使用道具 举报
任何文件都是以字节存储的
回复 使用道具 举报
FileInputStream是从文件系统中的某个文件中获得输入字节,而你纯文本里面不管字符串还是汉字都是由字节组成的,所以当然可以读取了。
回复 使用道具 举报
yinxjfly 发表于 2014-7-3 12:50
你的会回答被加分了!哈哈!

嗯哪呗,才发现,给力呀!:lol
回复 使用道具 举报
每8个二进制一个字节,每个字符由n个字节组成,一个一个字节传,当然也可以实现传字符的功能
回复 使用道具 举报
cheye0207 发表于 2014-7-3 22:31
每8个二进制一个字节,每个字符由n个字节组成,一个一个字节传,当然也可以实现传字符的功能 ...

:L:L
你说的没错!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马