io 流

167 阅读3分钟

先大概了解以下,最后有总结

  1. Java 中的输入输出都是以流的形式(文件读写,网络传递)。
  2. 编码问题
  3. File 类
  4. RandomAccessFile
  5. 按照数据流的不同分为 ·:输入流和输出流
  6. 按照处理数据单位不同可以分为:字节流和字符流

1.Java 中的输入输出都是以流的形式(文件读写,网络传递)。
在程序需要读取数据时会开启一个通向数据源的数据流,这个数据源可以是文件,内存或者是网络连接。类似的,当程序需要写入文件时,就会开启一个通向目的地的流。这里的数据源和目的地都可以通过 File 类中构造函数的参数进行赋值。(如:复制一段文字或者图片)

2. 编码问题
介绍三种
gbk 编码:中文 2 个字节,英文 1 个字节
utf-8:中文 3 个字节 英文 1 个字节
utf-16be:中文 2 个字节 英文 2 个字节
当你的字节序列是某种编码时,如果这时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码。
Java 是双字节编码 utf-16be

3.File 类
java.io.File 类用于表示文件(目录),
File 类只用于表示文件的信息(名称,大小等)不能用于文件内容的访问
第一个标识中需要介绍 \ 符号
File file=new FIle(“F:\demo”); 记得是双斜杠 \ 或者 / 还可以是 File.separator,File.separator 表示通用分隔符。三者功能相同
主要方法
exists(); 判断文件 / 文件夹是否存在
mkdir(); 创建文件夹 如果是多级目录用 mkdirs();
delete(); 删除文件夹
判断是否是一个目录 file.isDirectpry(); 是否是一个文件 file.isFile();
创建一个文件 createNewFile(); 是文件!!!不是文件夹,file 对象中要有文件后缀。

4.RandomAccessFile
Java 提供的对文件内容的访问,既可以读文件,也可以写文件。
(1).java 文件模式
在磁盘中的文件是 byte 存储的,是数据的集合
(2). 打开文件
有两种模式 rw(读写)和 r(读);
RandomAccessFile raf=new RandomAccessFile(file,“rw”)
!文件指针,打开文件时指针在开头 pointer=0;
(3). 写方法
raf.write(int) 只写一个字节
(4) 读方法
raf.read() 只读一个字节
(5) 文件读写完后一定要关闭
raf.close();

5. 按照数据流的不同分为 ·:输入流和输出流
以程序为对象
程序 --------> 文件 输出流
文件 --------> 程序 输入流
以下是一个输入流的 Demo
输出流介绍一个复制的 Demo

可以定义一个 byte 数组读取,读取效率快很多!!!!

6. 按照处理数据单位不同可以分为:字节流和字符流
字节流和字符流的原理是相同的,只是处理的单位不同
第五点中为字节流,(处理图片是最好用字节流,防止漏读);
小技巧:后缀为 Stream 是字节 · 流,而后缀为 Reader,Writer 是字符流
下面是一个字符流中读的 Demo(记得要关掉流)《输入流》

下面是一个字符流中写的 Demo(记得要关掉流)《输出流》

这里记得要刷新流 flush();!!!

总结:
(一)Java 中,设计了四个抽象类来表示流:
1.InputStream :字节流 读取数据
2.OutputStream:字节流 写入数据
3.Reader:字符流 读取数据
4.Writer :字符流 写入数据
其他多种多样的流都是继承了它们,并进行了装饰而派生出来的加强版

**(二) 使用步骤:

  1. 创建 File 对象
  2. 创建流对象
  3. 操作 读 ,写
    4 关闭流**