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

文件传输基础——Java IO流

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

已采纳回答 / XhstormR
好像是一种习惯,为了防止以后代码多的情况下因为缺乏该空函数,而程序出现错误。

已采纳回答 / 黑山头山大王
指的是文件的编码格式,文件要以一点的编码格式存储,读取也要用这种格式去解码,否则就会出现乱码

已采纳回答 / 慕函数2305665
1M=1024KB,1Kb=1024B,不一定是8,也可以大或者小,要取决于你要操作的文件的大小

已采纳回答 / XhstormR
create之前if--exsists

已采纳回答 / 张博
 c表示当前读取到的字节 。1、c = isr.read()    Reads a single character  读取单个characterthe next byte of data, or -1 if the end of the file is reached返回下一个next byte of data2、c = isr.read(byte[] , start,len) Reads characters into a portion of an array 读取多个charachters 返回t...

已采纳回答 / XhstormR
因为这样容易观察,比如 二进制 11111111就可以用 0xff 来表示,而且一般都是以十六进制来编码的。

已采纳回答 / 深天
Stirng file =“demo/obj.dat" 这里仅仅是创建了一个字符串,并没有当做文件用。还有File file="demo/obj.dat";这种创建文件对象的方法是完全错误的,正确写法是这样的:File file=new File("demo/obj.dat");回到刚才"为什么后来可以当做一个文件用":同上一句话可以改写成File file01 =new File(file);  //这里的的file引用上面的字符串即我们做的只是对字符串的引用,然后创建了一个文件对象,并没有说我们把它当...

已采纳回答 / huangsai
这个方法的作用是把缓冲区的数据输出。一般在读写流的时候,数据是先被读到了内存中,再把数据写到文件中,当数据读完的时候不代表数据已经写完了,因为还有一部分有可能会留在内存这个缓冲区中。这时候如果调用了close()方法关闭了读写流,那么这部分数据就会丢失,所以应该在关闭读写流之前先flush()。

已采纳回答 / niupizhi203522025
实际上并非是每次都产生异常,而是由于字符编码格式、文件是否存在等经常会发生异常,所以涉及到IO流或文件操作时,都要防止出现这样的异常,所以都要进行try/catch或抛除

已采纳回答 / 慕函数7182242
bytes用来记录读入了多少个字节(in.read()的返回类型就是int,值为读的字节个数)in.read(buf,0,buf.length)用来读入,一次最多可以读buf.length个字节,但是并不是每次都读入了这么多个字节,(可能读的文件没这么长),所以是用bytes来控制循环结束的条件

已采纳回答 / 远方的云o
这两个的差别,实际上是read()方法两种重载方式的差别。in.read()表示单字节读取,相当于一滴一滴水(字节)地去洒in.read(byte[] buf ,int start ,int size )表示字节先读取到buf缓冲区,start表示缓冲区的起始位置,size表示存入缓冲区的大小。这种方式相当于先把一滴一滴水(字节)放到一个桶(buf)里,当然这个桶肯定有大小(size),当桶里的水达到一定程度(缓冲区的极限)时,再将整个桶里的水洒出去。授人以鱼不如授人以渔详细课程可以去看看 慕课网Java...

已采纳回答 / 慕粉4021153
raf.seek(11); String str=new String(gbk); System.out.println(str);

已采纳回答 / Jenichan
这么跟你说吧,GBK的编码中文和符号是双字节,字符和整型是单字节。utf-8的中文和符号是三字节,字符和整型是单字节。所以整体来说是不兼容的,但如果你的文本存的都是字符和数值,这样子是不会出现乱码的。

已采纳回答 / QuaciXie
<...code...>read函数返回的是缓冲数组中实际上读入的字节数,无论是read(byte[] b) 还是 read(byte[] b,int off,int length)。对于read(byte[] b),它默认执行read(byte[] b,0,b.length)。所以应该可以用read(byte[] b)代替的 。解释如下:<...图片...>如果说在读到最后一组的时候,缓冲数组没有满,len值很有用。

已采纳回答 / XhstormR
因为 你是 Bar2 bar2 = new Bar2();   bar2 = (Bar2)ois.readObject();但是老师写的是   Bar2 bar2 = (Bar2)ois.readObject();  这里要注意的是 老师并没有去new一个Bar2对象而你却是先new出来的 肯定会调用父类的构造函数。
课程须知
亲,为了更好的学习本门课程,需要您对二进制的知识有所了解,还要熟悉Java的基本语法和面向对象的知识。
老师告诉你能学到什么?
1、了解文件编码。 2、能够对文件和目录进行管理操作。 3、能够应用字节流和字符流对文件进行读写操作。 4、能够对对象进行序列化和反序列化。

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消