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

文件传输基础——Java IO流

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

已采纳回答 / 深天
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值很有用。

已采纳回答 / Destiny命运
因为他用的是静态方法,可以通过类名加方法名直接调用这个静态方法

已采纳回答 / XhstormR
因为 你是 Bar2 bar2 = new Bar2();   bar2 = (Bar2)ois.readObject();但是老师写的是   Bar2 bar2 = (Bar2)ois.readObject();  这里要注意的是 老师并没有去new一个Bar2对象而你却是先new出来的 肯定会调用父类的构造函数。

已采纳回答 / 醉朦胧转身一瞬尽成空
这只是声明了一个对象,还没有写到系统中。后边加一句file2.createNewFile()就ok了

已采纳回答 / 六月熊
UTF-8中,前面两个字符表示数据占用的字节数。eg:  dos.writeUTF("中国中国"),运行结果前面两位就会为00 0c。即"中国中国"占用12个字节。还望采纳!

已采纳回答 / share眼睛
应该是看还有没有值(是否为空),为空返回值为-1。

已采纳回答 / 侧耳听
while ((b=fin.read())!=-1)判断的是fin.read()是否读到最后,而且每次判断都会重新给b赋值,这里主要是read()会一个一个往下读取。int b =fin.read();while(b!=-1)这里只给int b赋值一次,这里只判断b里面的值,如果b不等于-1不就一直打印一个嘛。

已采纳回答 / nlite
在eclipse中,选中某个类,按下F1键,可以查看到帮助
课程须知
亲,为了更好的学习本门课程,需要您对二进制的知识有所了解,还要熟悉Java的基本语法和面向对象的知识。
老师告诉你能学到什么?
1、了解文件编码。 2、能够对文件和目录进行管理操作。 3、能够应用字节流和字符流对文件进行读写操作。 4、能够对对象进行序列化和反序列化。

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消