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

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • file.mkdir()创建文件夹
    查看全部
  • file.exists() 判断文件存不存在
    查看全部
  • 查看全部
  • 查看全部
  • 字节流
    查看全部
  • file.wenk
    查看全部
  • hgjgj
    查看全部
  • 如果其父类没有实现序列化接口,那个父类的构造函数会被调用,否则不会被调用。
    查看全部
  • 对象的序列化和反序列化 对象序列化就是将Object转换成byte序列,反之叫对象的反序列化 一、 序列化流(ObjectOutputStream)是过滤流----writeObject 反序列化流(ObjectInputStream)----readObject 二、 1.transient 关键字:被transient修饰的元素,该元素不会进行jvm默认的序列化,但可以自己完成这个元素的序列化 2.ArrayList源码中序列化和反序列化的方法,只对数组中有效元素进行序列化,提高性能。 三、序列化接口(Serializable) 对象必须实现序列化接口,才能进行序列化,否则将出现异常 (1)父类实现了serializable接口,子类继承就可序列化。 1、子类在反序列化时,父类实现了序列化接口,则不会递归调用其构造函数。 (2)父类未实现serializable接口,子类自行实现可序列化 2、子类在反序列化时,父类没有实现序列化接口,则会递归调用其构造函数。 结论:谁实现了可序列化(包括继承实现的),谁的构造函数就不会调用。
    查看全部
  • 字符流 一、 Reader/Writer 操作的大多是文本文件;默认按照项目的编码解析(父类,抽象类) (1)InputStreamReader/OutputStreamWriter 提供char流与byte流相互转换(子类) 字符流的过滤器(缓冲流): 1.BufferedReader -- > readLine 读一行 不识别换行符,不会自动换行 ps:在文件中换行,可以用newLine();实现 2.BufferedWriter/PrintWriter -- > writeLine/println 写一行,不会自动换行/自动换行 (2)FileReader/FileWriter 适用于操作文件,但无法选择编码方式,用法与InputStreamReader和OutputStreamWriter类似 二、 EOF=End 及文件结尾(in.read()=-1) 三、 输入流基本方法 read(); 四、 输入流基本方法 read();
    查看全部
  • 序列化对象需要接口 implements Serializable 不想默认序列化的属性,在前面加 transient(private transient int...)
    查看全部
  • 字节流 一、 InputStream、OutputStream 抽象了应用程序读写数据方式(父类,抽象类) FileInputStream、FileOutputStream 具体的实现了在文件中读写数据(子类) (1)DataOutputStream&DataInputStream 对"流"功能的扩展,可以更加方便的读取int,long,字符等类型数据 DataOutputStream --- writeInt()/writeDouble()/writeUTF() (2)BufferedInputStream&BufferedOutputStream 提供了带缓冲区的操作,提高了IO的性能 三者对比: FileOutputStream--->write()方法相当于一滴一滴地把水“转移”过去 DataOutputStream-->writeXxx()方法会方便一些,相当于一瓢一瓢把水“转移”过去 BufferedOutputStream--->write方法更方便,相当于一飘一瓢先放入桶中,再从桶中倒入到另一个缸中,性能提高了 二、 EOF=End 及文件结尾(in.read()=-1) 三、 输入流基本方法 read(); int b=in.read();//读取一个字节无符号填充到int的低八位,返回读取的长度,-1是EOF;适合读取小文件 in.read(byte[] buf);//读取数据填充到字节数组buf in.read(byte[] buf,int start,int size);//同上,从buf的start位置开始存放size长度的数据,适合读取大文件 四、 输出流基本方法write(); out.write(int b); //写出一个byte到流,b的低八位 out.write(byte[] buf);//将buf字节数组都写入到流 out.write(byte[] buf,int start,int size);//同上,详见read对应方法
    查看全部
    0 采集 收起 来源:字节缓冲流

    2018-03-22

  • transient关键字
    查看全部
  • BufferedInputStream及BufferedOutputStream<br> 为io提供带缓冲区的操作,一般打开文件进行写入或读取操作时,都会加上缓冲,<br> 提高io的性能,文件流比作水<br> FileOutputStream-->write()一滴一滴将水转移<br> DataOutputStream-->writexx()相当于一瓢一瓢转移<br> BufferedOutputStream-->write 相当于一瓢一瓢移到桶中,再倒入另外一个缸中<br> <br> 代码:利用带缓冲的文件拷贝(单字节)<br> 第一步:先判断是否存在及是<br> 否是文件代码与之前一样<br> 第二步:创建带缓冲字节流<br> BufferedInputStream bis=new BufferedInputStream(<br> new FlieInputStream(srcFile));//srcFile为原文件<br> BufferedOutputStream bis=new BufferedOutputStream(<br> new FlieOutputStream(destFile));//destFile复制的文件<br> in c;<br> while((c=bis.read())!=-1){<br> bos.write(c);<br> bos.flush();//刷新缓冲区如果不写就写不到缓冲区<br> }<br> bis.close();<br> bos.colse(); 比较结果:批量字节读取文件最快
    查看全部
    0 采集 收起 来源:字节缓冲流

    2018-03-22

  • FlieOutputStream:实现向文件中写出byte数据的方法 代码: //如果该文件不存在,则直接创建,如果存在,删除后创建 FileOutputStream out=new FileOutputStream(file,true)//不用true则会被删除,用true就不会,直接追加内容,file文件对象或者路径 out.write(‘A’);//写出了A的第八位write只能写一个字节 out.write('B'); int a=10;//则write写int要写4次 out.write(a>>>24); out.write(a>>>16); out.write(a>>>8); out.write(a); //写汉字 byte[] gbk="中国".getBytes("gbk"); out.write(gbk); out.close(); 代码:文件的拷贝 public static void copyFile(File srcFile,File destFile)throws IOException{ //判断文件是否存在 if(!srcFile.exists()){ throw new IllegalArgumentException("文件"+srcFile+"不存在"); } //判断是不是文件 if(!srcFile.isFile()){ throw new IllegalArgumentException(srcFile)} } FileInStream in=new FileInStream(srcFile); FileOutStream out=new FileOutStream(destFile); byte[] buf=new byte[8*1024]; int b; while(()b=in.read(buf,0,buf.length))!=-1){ out.write(buf,0,b); out.flush();//最好加上 } in.close(); out.close();
    查看全部

举报

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

微信扫码,参与3人拼团

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

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