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

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • transient 修饰后 该元素不会被默认序列化
    查看全部
  • 一个类要序列化,就要实现Serializable接口,反过来说,不实现Serializable就不能序列化 当父类没实现Serializable接口,子类继承父类并实现Serializable接口,子类序列化时,父类的部分是没有被序列化的,那么反序列化的时候就没办法找到父类的部分,这时候怎么办呢,就调用父类构造器初始化父类部分。
    查看全部
  • BufferedReader BufferedWriter/PrintWriter
    查看全部
  • 所有能读取的东西分为:字节流和字符流 其中 有汉字的文本采用字符流去读和写,不然都采用字节流. 字节流:inputStream outputStream 字符流:inputStreamReader outputStreamWrite
    查看全部
  • RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件。 RandomAccessFile支持随机访问文件,可以访问文件的任意位置
    查看全部
  • gbk编码,中文占用2个字节,英文占用1个字节 utf-8编码,中文占用3个字节,英文占用1个字节
    查看全部
    0 采集 收起 来源:文件的编码

    2016-04-18

  • BufferedInputStream&BufferedOutputStream<br> 这两个流类为IO提供了带缓冲区的操作,一般打开文件进行写入或读取操作时,都会加上缓冲,这种流模式提高了IO的性能。<br> 假如从应用程序中把输入放入文件,相当于将一缸水倒入到另一个缸中:<br> FileOutputStream--->write()方法相当于一滴一滴地把水“转移”过去<br> DataOutputStream-->writeXxx()方法会方便一些,相当于一瓢一瓢把水“转移”过去<br> BufferedOutputStream--->write方法更方便,相当于一飘一瓢先放入桶中,再从桶中倒入到另一个缸中,性能提高了<br> <br> 注意:使用BufferedOutputStream,在每一次写入后,缓冲区要刷新,不然写不到文件中去。
    查看全部
    0 采集 收起 来源:字节缓冲流

    2018-03-22

  • DataOutputStream的定义: DataOutputStream dos = new DataOutputStream( new FileOutputStream(file)); //因为DataOutputStream的参数是OutputStream类型
    查看全部
  • file.read(byte[],begain,end)批量读取 System.currentTimeMills();返回当前时间的毫秒数,long型
    查看全部
  • 读文件的方式<br> 1:单字节读取,不适合大文件<br> 2:批量字节读取,适合大文件的读取,比较常用,当然,一次控制读取多少字节,要适中一般是1024的倍数 IO读取结束之后一定要关闭资源
    查看全部
  • javaI/O输入输出流
    查看全部
    0 采集 收起 来源:文件的编码

    2016-04-17

  • 序列化过程中子父类构造函数问题 一、父类实现了serializable接口,子类继承就可序列化。 1、子类在反序列化时,父类实现了序列化接口,则不会递归调用其构造函数。 二、父类未实现serializable接口,子类自行实现可序列化 2、子类在反序列化时,父类没有实现序列化接口,则会递归调用其构造函数。 *** 结论:【反序列化时】,向上递归调用构造函数会从【可序列化的一级父类结束】。即谁实现了可序列化(包括继承实现的),谁的构造函数就不会调用。
    查看全部
  • transient 关键字 private transient int stuage; 关键字之后jvm就不会再去默认的序列化 stuage 属性,但并不是说就不能序列化了,这时可以手动的序列化 //手动实现序列化 private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException { s.defaultWriteObject(); //能默认序列化 的 就先默认序列化 s.writeInt(stuage); //自己序列化一个用transient修饰的属性 } //手动实现反序列化 private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException { s.defaultReadObject(); //能默认反序列化 this.stuage = s.readInt(); //手动完成 stuage } ArrayList中封装了对数组的操作,其内部就是有一个数组,数组里面是可以有很多的元素的,一个数组,即便是没有存满元素,但是每一个数组元素也会有一个默认的值。如果使用jvm的默认序列化的话,这样将会把数组中那些带有默认值的元素也一块序列化,这样不是就浪费了。如果可以自己手动序列化的话,我就可以有选择的型的序列化,只把数组中存储的元素序列化,别的空数组元素则不需要序列化。 注意: (1)在以后的网络编程中,如果有某些元素不需要传输,那就可以用transient修饰,来节省流量;对有效元素序列化,提高性能。 (2)可以使用writeObject自己完成这个元素的序列化。ArrayList就是用了此方法进行了优化操作。ArrayList最核心的容器Object[] elementData使用了transient修饰,但是在writeObject自己实现对elementData数组的序列化。只对数组中有效元素进行序列化。readObject与之类似。
    查看全部
  • 字符流 之字符流的过滤器 除了具有基本的读写单个字外,更具有加强功能,可以一次性的读写一行。可以参见帮助文档,文档中的介绍更加详细,介绍到字符流的顾虑器,优化了一般的Reader的巨大开销。<br><br> Bufferedreader-->readLine()<br><br> BufferedWriter/PrintWriter 可以实现一次写一行<br> <br> /**其构造需要双层的嵌套<br> * 看看下面是一个多么恶心的嵌套,FileReader 是对一个 Reader 进行过滤 所以,构造式需要传进来一个Reader,(我们知道Reader是一个抽象类,我们只能使用起实现子类)<br> * 我们有知道,用的是Reader的实现子类 InputStreamReader,而InputStreamReader它有需要一个InputStream,我们最常用的<br> * InputStream的实现子类是FileInputStream,因为我们这里也是对文件进行操作<br> */<br> BufferedReader br = new BufferedReader(<br> new InputStreamReader(<br> new FileInputStream("e:\\Jworkspace\\code.txt")));<br> <br> BufferedWriter bw = new BufferedWriter(<br> new OutputStreamWriter(<br> new FileOutputStream("e:\\Jworkspace\\code2.txt")));<br> <br> String line;<br> while((line = br.readline())!=null) //一次读一行<br> {<br> System.out.println(line); //一次读一行不支持换行, 必须使用println<br> bw.write(line);<br> //必须要单独写出换行<br> bw.newLine();<br> bw.flush();<br> }<br> br.close();<br> bw.close()
    查看全部
  • FileReader/FileWriter:可以直接写文件名的路径。与InputStreamReader相比坏处:无法指定读取和写出的编码,容易出现乱码。只能读取与项目编码方式相同的文件 FileReader fr = new FileReader("e:\\javaio\\imooc.txt"); //输入流 FileWriter fw = new FileWriter("e:\\javaio\\imooc2.txt");//输出流 字符流:字符流分为输出流(Reader)和输出流(Writer)。操作的是文本文件。 字符处理,一次处理一个字符 字符处理底层还是基本的字节序列 InputStreamReader:完成byte流解析为char流,按照编码解析 FileInputStream in = new FileInputStream("e:\\javaio\\imoocutf8.txt"); //获取字符输入流 InputStreamReader isr = new InputStreamReader(in,"utf-8");//默认项目的编码,操作的时候,要写文件本身的编码格式 OutputStreamWriter:提供char流到byte流,按照编码处理 FileOutputStream out = new FileOutputStream("e:\\javaio\\imoocutf81.txt"); //获取字符输出流 OutputStreamWriter osw = new OutputStreamWriter(out,"utf-8");
    查看全部

举报

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

微信扫码,参与3人拼团

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

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