为了账号安全,请及时绑定邮箱和手机立即绑定

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰

最新回答 / Palyer
调用这个方法本身,所以叫递归啊

最新回答 / 幕布斯7473508
他这个只是打印文件,而不是目录。
if(file.isDirectory())//这个判断的是是不是目录,如果是就递归。把它下面的文件路径打印出来。
你如果要打印目录其实可以在递归前加上这段代码:System.out.print( file );
他就会把目录也打印下来。
?

最新回答 / 落千殇
创建带多层目录的文件,使用mkdirs( );

最新回答 / jia_蛙
你不是已经得到了结果吗? 使用Integer.toHexString就已经把字节转换成了以16进制显示的方式  这里又使用 &0xff把前面24个没用的0去掉,这就变成你控制台输出的那些了

最赞回答 / iodysseus
你的补0判断没有问题,只不过是因为你的读取文件中,包含了中文,而中文在字节数组中保存的数值是负值, if(buf[i]<=0xf){    System.out.print("0");    }所以但凡是中文 都会经由此补上0,而且看你输出的全是3位补0,应该是全文字内容,你再加入一点字母数字,就会发现有3位和两位并存的现象

最新回答 / SloMo8
00  06 --->  这两字节表示的是字符串s占6个字节e4  b8  ad  e5  9b  bd  --->"中国"的utf-8编码4e  2d  56  fd  --->"中国"的utf-16be编码

最新回答 / Ray_Loy
writeChars是写一个序列的UCS2编码字符串,要用readChar逐个读取
我感觉java面向对象遵循的是宏观因果律
序列化的时候调用所有父类的构造方法其实是因为Bar2 bar = new Bar2()这个实例化对象的操作造成的,可以在后面System.out.println(&quot;构造方法之后&quot;);可以看出来,因为要构造子类都得先构造父类

反序列化如果父亲实现了序列化接口,对儿子进行序列化时其序列化代码中就蕴含了父亲的信息,也就知道了其父亲的存在,但不知道他爷爷以及一直到老祖宗Object是否存在,因为他们没有实现序列化接口,所以得依次创建这些祖先类的实例,也就是调用构造方法。但由于他父亲已经存在于序列化信息中。所以就不用再构造一遍了。
为了保证反序列不是无中生有的

最新回答 / 不见子都
b & 0xff,这个是必须的吗,就算我不加& 0xff,也到的结果也是一样的。
读文件是硬盘往内存里不断input,CPU在内存里不断read

写文件是CPU不断往内存里write,内存不断往硬盘里存储output

所以把内存看成主体,输入流是本来就存在于硬盘的数据不断输入到内存,我们read内存就能看到数据了,是一种输入过程

输出流得先write进内存,内存再输出到硬盘进行存储,是一种输出过程也就是output

close()应该就是关闭内存
又是父又是爸的,我都不好意思了。感谢老师,讲的太细心了

最赞回答 / qq_领悟_27
字符流,读出来是个字符啊,一串字符不就是字符串了吗
字符流的底层也是字节流
所以在创建字符流对象时,也需要把字节流对象传入
如:InputStreamReader in=new InputSteamReader(new FileInputStream());
for循环适合已知次数的情况,即for只会读到字节数组满了就会停止。
while是一直读到文件结尾才会停止,如果字节数组满了,它会从头覆盖此数组进行读取。
课程须知
亲,为了更好的学习本门课程,需要您对二进制的知识有所了解,还要熟悉Java的基本语法和面向对象的知识。
老师告诉你能学到什么?
1、了解文件编码。 2、能够对文件和目录进行管理操作。 3、能够应用字节流和字符流对文件进行读写操作。 4、能够对对象进行序列化和反序列化。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消