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

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • 对象的序列化与反序列化,在将文件在网络上传输时需要将文件转化成字节传输,也就是序列化(socket通信)
    查看全部
  • in.read(buf, 0, buf.length)这个方法不是一次性读完了嘛? 首先对于你的这个理解是错误的,因为这个方法正确的理解是把文件内容的字节读入到字节数组buf中,但是文件内容的字节有可能大于字节数组buf的长度,那么文件内容就一次读不完。 in.read(buf, 0, buf.length)这个方法可能为-1吗 再来说说这个方法的返回值,这个方法返回的是实际读取到字节数组中的字节的数量。官方api明确指出,如果已经达到文件的末尾,返回值为-1.
    查看全部
  • 字符流的处理
    查看全部
  • 字符流
    查看全部
  • File Data 与Buffered
    查看全部
    0 采集 收起 来源:字节缓冲流

    2016-04-21

  • 1、java文件模型 在硬盘上的文件是byte byte byte存储的,是数据的集合 1、打开文件 有两种模式“rw”(读写) “r”(只读) RandomAccessFile raf = new RandomAccessFile(file,"rw"); 文件指针,打开文件时指针在开头pointer=0; 3、写方法 raf.write(int a) --->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入 4、读方法 int b = raf.read() ------>读一个字节 5、文件读写完成以后一定要关闭(Oracle官方说明)
    查看全部
  • RandomAccessFile是java提供的对文件内容的访问,既可以读文件,也可以写文件。 RandomeAccessFile支持随机访问文件,可以访问文件的任意位置
    查看全部
  • 数据类是为了处理基本数据类型时更方便而用的
    查看全部
  • 序列化中父子类的构造函数的问题:<br> 1:一个类实现了序列化接口,那么其子类都可以进行序列化<br> 2:序列化的时候,使用子类创建对象的时候会递归调用父类的构造函数——JAVA是单继承的语言,要先有父再有子 3:反序列化的时候,对子类对象进行反序列化操作时,如果其父类没有实现序列化接口,那么其父类的构造函数会被递归调用——直接父类和间接父类都是如此的,反之,如果父类实现了序列化的接口,那么子类继承它的属性和方法就可以直接反序列化,就不会调用父类的构造函数了。
    查看全部
  • 一个类要序列化,就要实现Serializable接口,反过来说,不实现Serializable就不能序列化 当父类没实现Serializable接口,子类继承父类并实现Serializable接口,子类序列化时,父类的部分是没有被序列化的,那么反序列化的时候就没办法找到父类的部分,这时候怎么办呢,就调用父类构造器初始化父类部分。
    查看全部
  • JAVA I/O 输入输出流-20160421 RandomAccessFile基本操作 RandomAccessFile java提供的对文件内容的访问类,既可以读,也可以写。 RandomAccessFile支持随机访问文件,可以访问文件的任意位置 (1)java文件模型 在硬盘上的文件时byte byte byte存储的,时数据的集合 (2)打开文件 有两种模式”rw”(读写)”r”(只读) RandomAccessFile raf = new RandomAccessFile(file,”rw”) 文件指针,打开文件时指针在开头pointer = 0; (3)写方法 raf.write(int)—>只写一个字节(后8位),同时指针指向下一个位置,准备再次写入 (4)读方法 int b = raf.read()—>读一个字节 (5) .close() 文件读写完成以后一定要关闭(Oracle官方说明)
    查看全部
  • 字节流
    查看全部
  • 输入流基本方法
    查看全部
  • 输入流基本方法
    查看全部
  • 当我们序列化一个对象时,不想序列化这个对象中的某些属性时,我们可以将对应的不想被序列化的属性使用 transient这个关键字来修饰,这样——此属性就不会被JVM默认的序列化了,当然,当我们想对这个属性序列化的时候,也可以自己完成对此属性的序列化。 之所以有这样的功能存在,其原因在与: 1:我想自己序列化某个对象的属性——ArrayList这个类中就有这样的例子——思路是 private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException{ s.defaultWriteObject();//把jvm能默认序列化的元素进行序列化操作 s.writeInt(stuage);//自己完成stuage的序列化 } private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException{ s.defaultReadObject();//把jvm能默认反序列化的元素进行反序列化操作 this.stuage = s.readInt();//自己完成stuage的反序列化操作 } 2:我不想序列化某个对象的属性——可能想节省网络流量,也可能不想传递某个对象的属性 3:这样做的目的,有时是为了为我们的代码提高效率,建议分析——ArrayList类中自己包装的序列化和反序列化的操作。将数组中有效的元素,序列化和反序列化,目的是为了能够提高效率。
    查看全部

举报

0/150
提交
取消
课程须知
亲,为了更好的学习本门课程,需要您对二进制的知识有所了解,还要熟悉Java的基本语法和面向对象的知识。
老师告诉你能学到什么?
1、了解文件编码。 2、能够对文件和目录进行管理操作。 3、能够应用字节流和字符流对文件进行读写操作。 4、能够对对象进行序列化和反序列化。

微信扫码,参与3人拼团

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

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