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

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • 2222222222222222222222222
    查看全部
    0 采集 收起 来源:字节缓冲流

    2015-09-26

  • 1111111111111111111
    查看全部
  • 单字节读取不适合读取大文件
    查看全部
  • 批量字节读取的方式,比单字节读取的方式。在读取大文件时用的时间少很多。
    查看全部
  • 5
    查看全部
  • transient writeobject readobject //有效元素的序列化,免除不必要的序列化,提高效率
    查看全部
  • 网络中传输,对象要进行序列化操作
    查看全部
  • int b=in.reaf() //读取一个无符号字节填充到int的低八位, in.read(byte[] buf)// 把in中文件直接读取到byte字符数组中 in.read(byte[] buf,int start, int end)直接读取到byte行数组中的从start位到end位
    查看全部
  • 字节和字符的区别:IO流输入输出的基本单位
    查看全部
  • 序列化中子类和父类构造函数的调用问题 1.一个类实现了序列化接口,那么其子类都可以进行序列化 2.在new一个子类时,父类的构造函数也会被调用 3.例子: (1)父类A实现了Serialize,子类A2->A1->A 对A2反序列化时,其父类A1和A的构造函数不会被调用 (2)父类B,子类B1实现了Serialize,且->B,B2->B1 对B2反序列化时,其父类B1的构造函数不会被调用,但B的构造函数将被调用 (3)父类C,子类C1->C,子类C2实现了Serialize,且C2->C1->C 对C2反序列化时,其父类C1和C的构造函数均被调用
    查看全部
  • transient关键字声明以及ArrayList源码分析 1.transient关键字 如果一个类实现了Serializable接口,那么它内部的所有元素都会被序列化和反序列化。 transient关键字声明某个元素的作用在于,可以自由的序列化和反序列化这个元素。 2.transient关键字声明的元素如何序列化和反序列化? (1)使用transient关键字声明的元素如果想自己序列化,则该类中需要使用writeObject()签名 private void writeObject(ObjectOutputStream s) throws IOException{ s.defaultWriteObject(); //把jvm能默认序列化的元素进行序列化操作 s.writeInt(stuAge); //将stuAge写入ObjectOutputStream流中,自己完成stuAge的序列化 //这里需要注意,因为这里的stuAge是一个int,所以使用writeInt()。若是一个Object,则用writeObject() } (2)使用transient关键字声明的元素如果想自己反序列化,则该类中需要使用readObject()签名 private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException{ s.defaultReadObject(); //把JVM能默认反序列化的元素进行反序列化 this.stuAge = s.readInt(); //自己完成stuAge的反序列化 } 3.使用transient进行声明的好处在于,如果某个对象在网络中传输,有些元素不想被序列化,或者想自己序列化。从而提高了性能。 分析ArrayList源码中序列化和反序列化的部分,它只对有效元素就行了序列化(如图)。反序列化也是这样。
    查看全部
  • 对象的序列化和反序列化 1.主要内容(如图) 2.对象的序列化:ObjectOutputStream ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("demo\\serial.dat")); //ObjectOutputStream的构造函数的参数是OutputStream流,这里创建了一个文件,也可以是一个网络的流 Student stu = new Student("10001", "xzhang76", 27); oos.writeObject(stu); //将Student对象序列化后放入ObjectOutputStream流中,相当于放入创建的文件中 3.对象的反序列化:ObjectInputStream ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fileSerial)); //将ObjectInputStream流中的对象反序列化出来,这里是一个文件,也可以是网络的流 Student stu = (Student) ois.readObject(); //反序列化之后保存在Student对象中 System.out.println(stu); 4.需要注意: (1)使用完后关闭close() (2)比较重要,例子中都是来自本地文件创建出来的OutputStream和InputStream,但注意常用的流都是通过网络获取的。 (3)最重要,要将某个类进行序列化和反序列化,这个类必须实现Serializable接口 public class Student implements Serializable{
    查看全部
  • 字符流操作
    查看全部
  • bytes的结果应该为length整倍数或-1?
    查看全部
  • 字符流的过滤器 1.三个比较重要的类: BufferedReader、BufferedWriter、PrintWriter 2.构造函数 原型new BufferedReader(Reader reader);所以参数是一个Reader对象,可以使用如下两种方式。效果相同 (1) BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(srcFile))); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(destFile))); (2) BufferedReader br1 = new BufferedReader(new FileReader(srcFile)); BufferedWriter bw1 = new BufferedWriter(new FileWriter(destFile)); 3.从BufferedReader对象中读出一行并放到BufferedWriter对象中 String line; while((line = br1.readLine()) != null){ //一次读取一行,但不能识别换行 bw1.write(line); bw1.newLine(); //单独写出换行 bw1.flush(); } 需要注意:readLine()每次读出一行,但不包括换行,所以写入BufferedWriter时需要换行。 4.使用PrintWriter PrintWriter pw = new PrintWriter(destFile); //构造函数 另一种构造:new PrintWriter(new FileOutputStream(destFile), true); //这里的true是指是否自动flush() while((line = br1.readLine()) != null){ pw.println(line); pw.flush(); //如果使用第二种构造,这里不需要flush() } 注意:使用PrintWriter不需要在意换行,自动会换行。
    查看全部

举报

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

微信扫码,参与3人拼团

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

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