为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 文件传输基础——Java...

文件传输基础——Java IO流 学习笔记

2019.02.27 21:00 1537浏览
  1. 文件编码图片描述

gbk编码中文占用2个字节,英文占用1个字节
utf-8编码中文占用3个字节,英文占用1个字节
java双字节编码,一个字符占两个字节,它是utf-16be编码
字符串字节转换 s.getBytes(“utf-8”);转化为utf-8
图片描述

第2章 File 类的使用

  1. 2-1 File 类常用 API 介绍
  • java.io.file类 用于表示文件(目录)

  • File 类只用于表示文件(目录)的信息(名称。大小等),不能用于文件内容的访问
    import java.io.File;引入File类
    //写文件路径已经要双斜杠
    File file = new File("E:\\javaio\\imooc");
    file.exists())//判断文件是否存在
    file.mkdir();//创建目录 
    file.mkdirs()//创建多级目录
    file.delete();//删除目录
    //是否是一个目录  如果是目录返回true,如果不是目录or目录不存在返回的是false
    file.isDirectory()
    //是否是一个文件
    file.isFile()
    //创建文件,这里会抛出异常,所以需要捕获异常
    file2.createNewFile();
    System.out.println(file);//file.toString()的内容
    System.out.println(file.getAbsolutePath());
    System.out.println(file.getParent());//获取父级目录
    //获取父级目录完整路径
    System.out.println(file.getParentFile().getAbsolutePath());
    list() 列出当前目录的子目录和文件(返回字符串数组,直接子的名称,不报名子目录下的内容)
    file.listFiles()返回文件(目录)的抽象(对象)
    

第3章 RandomAccessFile类的使用

  1. RandomAccessFile基本操作
    RandomAccessFile是java提供的对文件内容的访问,既可以读文件也可以写文件,支持随机访问文件,可以访问文件任意位置
    (1)java文件模型
    在硬盘上的文件是byte byte byte存储的,是数据的集合
    (2)打开文件
    有两种模式"rw"(读写) “r”(只读)
    RandomAccessFile raf = new RandomeAccessFile(file,“rw”)
    文件指针,打开文件时指针在开头 pointer = 0;
    (3) 写方法
    raf.write(int)—>只写一个字节(后8位),同时指针指向下一个位置,准备再次写入
    (4)读方法
    int b = raf.read()—>读一个字节
    (5)文件读写完成以后一定要关闭(Oracle官方说明)
    (6)//可以直接写一个int writeInt(i);
    (7)write(‘A’);//只写了一个字节
    (8)//读文件,必须把指针移到头部 seek(0);
    (9) 关闭文件 close();

字节流之文件输入流FileInputStream

IO流(输入流、输出流)

字节流、字符流

  1. 字节流
    1)InputStream、OutputStream
    InputStream抽象了应用程序读取数据的方式
    OutputStream抽象了应用程序写出数据的方式
    2)EOF = End 读到-1就读到结尾
    3)输入流基本方法
    int b = in.read();读取一个字节无符号填充到int低八位.-1是 EOF
    in.read(byte[] buf)
    in.read(byte[] buf,int start,int size)
    4)输出流基本方法
    out.write(int b) 写出一个byte到流,b的低8位
    out.write(byte[] buf)将buf字节数组都写入到流
    out.write(byte[] buf,int start,int size)

5)FileInputStream—>具体实现了在文件上读取数据
6)FileOutputStream 实现了向文件中写出byte数据的方法
7)DataOutputStream/DataInputStream
对"流"功能的扩展,可以更加方面的读取int,long,字符等类型数据
DataOutputStream
writeInt()/writeDouble()/writeUTF()

8)BufferedInputStream&BufferedOutputStream
这两个流类位IO提供了带缓冲区的操作,一般打开文件进行写入
或读取操作时,都会加上缓冲,这种流模式提高了IO的性能
从应用程序中把输入放入文件,相当于将一缸水倒入到另一个缸中:
FileOutputStream—>write()方法相当于一滴一滴地把水“转移”过去
DataOutputStream–>writeXxx()方法会方便一些,相当于一瓢一瓢把水“转移”过去
BufferedOutputStream—>write方法更方便,相当于一飘一瓢先放入桶中,再从桶中倒入到另一个缸中,性能提高了
9)文件读写流 FileReader/FileWriter
10)序列化接口(Serializable)
对象必须实现序列化接口 ,才能进行序列化,否则将出现异常
这个接口,没有任何方法,只是一个标准

11) transient关键字
private void writeObject(java.io.ObjectOutputStream s)
throws java.io.IOException
private void readObject(java.io.ObjectInputStream s)
throws java.io.IOException, ClassNotFoundException
分析ArrayList源码中序列化和反序列化的问题

12)序列化中 子类和父类构造函数的调用问题

点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
手记
粉丝
4
获赞与收藏
4

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

51篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

151篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消