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

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • utf-8编码中中文占用3个字节,英文占用1个字节 gbk编码中文占用2个字节,英文占用1个字节 Java采用双字节编码,utf-16be编码中文占用2个字节,英文占用2个字节
    查看全部
    0 采集 收起 来源:文件的编码

    2016-06-19

  • 这里因为是以字节形式存放,字节是有符号的,当变为Integer时有可能出现负数的情况,所以需要&0xff,而前面一节read()是读取一个字节以0-255的整数形式存放,是无符号的,所以输出时不用&0xff
    查看全部
  • 此处b没有与0xff做与是因为按字节读取,且无符号填充到int的第八位,所以存放时是原汁原味儿的,不会出现数据转换的故障,取出来时也直接取即可,后面读取到缓冲里,要与0xff,是因为存放时以字节数组存放,而自己是有符号的,当读取到最高位为1时会变成负数,因此取出时需要与0xff
    查看全部
  • utf-8编码中中文占用3个字节,英文占用1个字节 gbk编码中文占用2个字节,英文占用1个字节 Java采用双字节编码,utf-16be编码中文占用2个字节,英文占用2个字节
    查看全部
    0 采集 收起 来源:文件的编码

    2016-06-17

  • 序列化过程中子父类构造函数问题 一、父类实现了serializable接口,子类继承就可序列化。 1、子类在反序列化时,父类实现了序列化接口,则不会递归调用其构造函数。 二、父类未实现serializable接口,子类自行实现可序列化 2、子类在反序列化时,父类没有实现序列化接口,则会递归调用其构造函数。 结论:谁实现了可序列化(包括继承实现的),谁的构造函数就不会调用。
    查看全部
  • 字节流
    查看全部
  • 1.transient 关键字:被transient修饰的元素,该元素不会进行jvm默认的序列化,但可以自己完成这个元素的序列化 (1)如果某些元素不需要传输,那就可以用transient修饰,来节省流量;对有效元素序列化,提高性能。 (2)ArrayList最核心的容器Object[] elementData使用了transient修饰,但是在writeObject自己实现对elementData数组的序列化。只对数组中有效元素进行序列化,提高性能。readObject与之类似。 2.ArrayList源码中序列化和反序列化的方法,可以拿來直接用: //序列化 private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException{ } //反序列化 private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException{ } eg: 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的反序列化操作 }
    查看全部
  • public static void main(String[] args) throws Exception{ String file = "demo/obj.dat"; //1.对象的序列化 /*ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream(file)); Student stu = new Student("10001", "张三", 20); oos.writeObject(stu); oos.flush(); oos.close();*/ //2.反系列化 ObjectInputStream ois = new ObjectInputStream( new FileInputStream(file)); Student stu = (Student)ois.readObject(); System.out.println(stu); ois.close();
    查看全部
  • 1.对象序列化就是将Object转换成byte序列,反之叫对象的反序列化 2.序列化流(ObjectOutputStream)是过滤流----writeObject 反序列化流(ObjectInputStream)----readObject 3.序列化接口(Serializable) 对象必须实现序列化接口,才能进行序列化,否则将出现异常
    查看全部
  • 1.BufferedReader -- > readLine -> 读一行 不识别换行符,不会自动换行 2.BufferedWriter/PrintWriter -- > writeLine/println -> 写一行,不会自动换行/自动换行 在文件中换行,可以用newLine();实现
    查看全部
  • /** *1.FileReader 和FileWriter适用于操作文件的,用法与InputStreamReader和OutputStreamWriter类似 *2.不能选择编码方式,对于与项目的编码方式不同的文本文件用FileWriter读取是会出现乱码的 *3.FileWriter(filename,true)是一种可在原文件上追加写操作的构造方式 */ public class FrAndFwDemo { public static void main(String[] args) throws IOException{ FileReader fr = new FileReader("e:\\javaio\\imooc.txt"); FileWriter fw = new FileWriter("e:\\javaio\\imooc2.txt"); //FileWriter fw = new FileWriter("e:\\javaio\\imooc2.txt",true); char[] buffer = new char[2056]; int c ; while((c = fr.read(buffer,0,buffer.length))!=-1){ fw.write(buffer,0,c); fw.flush(); } fr.close(); fw.close(); } }
    查看全部
  • 对子类对象进行反序列化操作时,如果其父类没有实现序列化接口,那么其父类的构造函数会被调用
    查看全部
  • transient 后通过自己有选择地手动序列化提高性能
    查看全部
  • transient修饰另一端用不上的域
    查看全部
  • 对象序列化 转化成字节序列
    查看全部

举报

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

微信扫码,参与3人拼团

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

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