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

文件传输基础——Java IO流

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

最赞回答 / 头发多
00  06 --->  这两字节表示的是字符串s占6个字节   (  String s = dis.readUTF();  )e4  b8  ad  e5  9b  bd  --->"中国"的utf-8编码4e  2d  56  fd  --->"中国"的utf-16be编码
谢谢老师,老师辛苦了
坑爹啊,软件里没有自动生成tostring的方法,就没写,这个反序列化得到的对象还不能通过字段(属性)访问。必须用tostring方法才能看出来,研究了好久。还有就是Iso.readobject();有异常,需要处理
看不懂怎么办
卧槽 根本听不懂啊 ,点赞告诉我不是一个人

已采纳回答 / pergod
bytes是读取到字节的长度,如果因为流位于文件末尾而没有 可用 的字节,则返回值 -1。(bytes = in.read(buf, 0, buf.length))> 20*1024,如果这样设置的话,后面已经没有可用的字节还是会继续读入,这样会异常吧。
最后那个方法列出只是文件,没有目录路径啊。要想把所有目录路径也输出应该在if(file.isDirectory())后先输出路径即:System.out,println(file);然后再递归。
个人觉得已经很不错了!我能不能说这是Java中比较基础的部分,文件操作也是要掌握的内容之一!要是觉得很难又不去好好思考只是一味吐槽老师讲的不好,那你的学习道路真心堪忧....
在线怎么不能用HTML播放了?不可以快进了????
我去看了看read(byte[])这个方法源码,发现他其实就是read(void)的封装,所以所谓的读取到byte数组方式读取效率高就是错误的
但是视频中两种方法执行时间相差很大,为什么呢?
因为读取mp3文件(3MB左右)的时候,读取到byte[]数组方式的缓冲区为8*1024Byte,即8KB,也就是只读了mp3文件的前8KB内容,而单字节读取方式是读取整个文件
那是因为缓冲区比mp3文件小,没读完 - -!

最新回答 / 筱芴
你可以先判断文件是否存在file.exists(),要是不存在就进行创建file.createNewFile();这样操作就没问题了

最赞回答 / 春城乐
你新建的文本文件window默认是ANSI编码,而ANSI编码就代表GBK编码,java是双字节编码,即utf-16be,先检查你建的项目是不是GBK或utf-16be编码,再检查写入文件时的字节或字符流是否指定为该编码方法!可参照以下代码:public class BufferReaderWriter {    public static void main(String[] args) throws IOException { // 读操作      BufferedReader br=new Bu...

已采纳回答 / 春城乐
public static void main(String[] args) throws IOException { // TODO 自动生成的方法存根 String file="demo/dos.txt"; DataOutputStream dos=new DataOutputStream(new FileOutputStream(file)); dos.writeInt(10); dos.writeInt(-10); dos.writeLong(10L); dos.writeDoub...
课程须知
亲,为了更好的学习本门课程,需要您对二进制的知识有所了解,还要熟悉Java的基本语法和面向对象的知识。
老师告诉你能学到什么?
1、了解文件编码。 2、能够对文件和目录进行管理操作。 3、能够应用字节流和字符流对文件进行读写操作。 4、能够对对象进行序列化和反序列化。

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消