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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

OmbreAmant丶C

中级黑马

  • 黑马币:85

  • 帖子:90

  • 精华:0

© OmbreAmant丶C 中级黑马   /  2016-6-13 19:30  /  1808 人查看  /  29 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 OmbreAmant丶C 于 2016-6-23 00:04 编辑

如题,今天刚学I/O,有点搞不清 输入输出  还有Copy 原理 有大神可以指点下么?-----------------------------------------华丽的分割线---------------------------------------------
现在再说数据库了  有点搞不定 大牛们有没有好的建议 学好一点!!!!

29 个回复

正序浏览
很快就要学I/O了,也进来学习下
回复 使用道具 举报
MySQL  语句有点乱!!!!
回复 使用道具 举报
tianzhu2725 发表于 2016-6-18 07:02
输入和输出是相对于内存说的而不是相对于硬盘,理解了这个就理解了.

恩 谢谢
回复 使用道具 举报
输入和输出是相对于内存说的而不是相对于硬盘,理解了这个就理解了.
回复 使用道具 举报
我是泽西哥 发表于 2016-6-18 00:26
不忙 我现在只是个大二的学生.你在黑马了吗. 早点休息 争分夺秒.

好的 你也早点休息吧!
回复 使用道具 举报
OmbreAmant丶C 发表于 2016-6-17 23:46
谢谢你百忙之中还浏览了我的帖子 非常感谢!

不忙 我现在只是个大二的学生.你在黑马了吗. 早点休息 争分夺秒.
回复 使用道具 举报
我是泽西哥 发表于 2016-6-17 23:23
比较通俗来说,FileInputStream就是把文件写入内存中,FileOutputStream相当于写出。这样理解你可能会比较舒 ...

谢谢你百忙之中还浏览了我的帖子 非常感谢!
回复 使用道具 举报
比较通俗来说,FileInputStream就是把文件写入内存中,FileOutputStream相当于写出。这样理解你可能会比较舒服一点.至于Copy,字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的
回复 使用道具 举报
你在那个教室? 我是ee基础的
回复 使用道具 举报

我是黑马 双元安卓基础班,会有笔记,然后会将理论啊!你们没有?
回复 使用道具 举报
善良的死神达乐 发表于 2016-6-16 22:24
教材上就是这样说的啊!很好理解啊!为什么会懵????

教材是什么鬼?
回复 使用道具 举报

教材上就是这样说的啊!很好理解啊!为什么会懵????
回复 使用道具 举报
dubei1993 发表于 2016-6-16 00:47
我请问你在哪里看到的这些?感觉不太对,文本中存储的都是汉子或字符,都要编码后读入内存的。。怎么会有 ...

a.int read(byte[] b)                                                                一次读取一个字节数组       
        (用 int 类型接收是因为 byte 类型中会出现-1的情况,导致后面无法继续读取,int 类型会在前面补上24个0,不会出现-1的情况)
        b.write(byte[] b)                                                                        一次写出一个字节数组
        c.available()                                                                                获取读的文件所有的字节个数
        弊端:有可能会内存溢出
read()方法读取的是一个字节,为什么返回是 int,而不是 byte
        a.因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回 byte,有可能在读到中间的时候遇到111111111
                那么这11111111是 byte 类型的-1,我们的程序是遇到-1就会停止不读了,后面的数据就读不到了,所以在读取的时候用 int 类型接收,如果11111111会在其前面补上
                        24个0凑足4个字节,那么byte类型的-1就变成 int 类型的255了这样可以保证整个数据读完,而结束标记的-1就是int类型
回复 使用道具 举报
善良的死神达乐 发表于 2016-6-15 22:35
首先我们要知道,程序运行是以补码的形式存在的,当byte读到文件的中间时,很有可能出现11111111的情况,而且 ...

呃。。。越说越懵~
回复 使用道具 举报
dubei1993 来自手机 中级黑马 2016-6-16 00:47:58
16#
善良的死神达乐 发表于 2016-6-15 22:30
首先我们要知道,程序运行是以补码的形式存在的,当byte读到文件的中间时,很有可能出现11111111的情况,而且 ...

我请问你在哪里看到的这些?感觉不太对,文本中存储的都是汉子或字符,都要编码后读入内存的。。怎么会有11111111这样的东西?如果文本文件中有-1,因为读取一般为1024字节。你说的read()一次读取一个字节时返回值是null才退出的。。
回复 使用道具 举报
dubei1993 来自手机 中级黑马 2016-6-16 00:34:05
15#
善良的死神达乐 发表于 2016-6-15 01:19
快速回答....为什么-1是int类型,不是byte类型的

返回的是长度.无数据返回-1,好比是查数据索引,索引不存在。源码返回-1
回复 使用道具 举报
jhyang 发表于 2016-6-15 21:47
因为read()方法的返回值是int

首先我们要知道,程序运行是以补码的形式存在的,当byte读到文件的中间时,很有可能出现11111111的情况,而且这8个1就是byte的-1.并且,程序规定是遇到-1就停止运行,这样问价读到一半就不读了,这不是八阿哥嘛?所以不能用byte.
但是int不一样,因为int会在前面默认加上24个0,也就是说,永远不会出现-1的情况,并且在写出的时候,系统也会自动砍去24个0.这...就是原因...
回复 使用道具 举报
OmbreAmant丶C 发表于 2016-6-15 12:28
谢谢你的回答!!!

首先我们要知道,程序运行是以补码的形式存在的,当byte读到文件的中间时,很有可能出现11111111的情况,而且这8个1就是byte的-1.并且,程序规定是遇到-1就停止运行,这样问价读到一半就不读了,这不是八阿哥嘛?所以不能用byte.
但是int不一样,因为int会在前面默认加上24个0,也就是说,永远不会出现-1的情况,并且在写出的时候,系统也会自动砍去24个0.这...就是原因...
回复 使用道具 举报
善良的死神达乐 发表于 2016-6-15 01:19
快速回答....为什么-1是int类型,不是byte类型的

因为read()方法的返回值是int
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马