IO流
File
在Java中,Everything is Object!所以在文件中,也不例外!在Java中,可以用 File 类来表示一个与硬盘上文件联系!!!注意:
1、File仅代表一个联系,可能文件存在,也可能不存在;
2、这里的文件可以是文件,也可以是文件夹
IO流的用法和概念
IO流是用来处理设备之间的数据传输,java对数据 的操作是通过流的方式,
java用于操作流的类都在IO包中,流主要分为,输入流和输出流。
流按操作类型分为两种;
字节流;字节流可以操作任何数据,因为在计算机中任何数据都是一字节的形式存储的
字符流;
字符流只能操作纯字符数据(文本),比较方便。
IO流的常用父类
字节流的抽象父类有;
InputStream(从磁盘输入到内存)和OutputStream(从内存输出磁盘).
字符流的抽象父类有
Reader(从磁盘输入到内存)和Writer(从内存输出到磁盘)
IO流的格式
/**
* 字符流 拷贝文件
* 一边读一边写
*/
public class TestIo03 {
public static void main(String[] args) throws Exception {
//从哪里读, 确定源头
File file = new File("a.txt");
//写到哪里去 确定写的目标
File file1 = new File("b.txt");
//创建 读入 和写出的流
Reader r = new FileReader(file);//读入
Writer w = new FileWriter(file1);
//创建一个缓冲区 暂时存放读取到的数据
char[] car = new char[1024];
int len = -1;//定义一个零时的变量
//一边读出
while (-1 != (len = r.read(car))){
//一遍写入
w.write(car,0,len);
}
//刷出 数据
w.flush();
//关闭流
w.close();
r.close();
}
}
字节流的常用方法
返回值 方法
void close() 关闭此输入流并释放与流相关联的任何系统资 源。
abstract int read() 从输入流读取数据的下一个字节。
int read(byte[] b) 从输入流读取一些字节数,并将它们 存储到缓冲区 b
int read(byte[] b, int off, int len) 从输入流读取 多 len 字节的数据到一个字节数组。
字符流的常用方法
返回值 方法
abstract void ; close() 关闭流并释放与之相关联的任何系统资源。
int ; read() 读一个字符 int read(char[] cbuf) 将字符读入数组。
abstract int ; read(char[] cbuf, int off, int len) 将字符读 入数组的一部分。
对比InputStream和Reader 所提供的方法,可以看出这两个基类的功能基本相似。 在读取文件时返回结果为 -1 时表明到了输入流的结束点。 InputStream 和 Reade 都是抽象的,不能直接创建它们的实例,可以使用它们的子类。
文件节点类:
FileInputStream 和 FileReader FileInputStream 和 FileReader,它们都是节点流,直接和指定文件关联。 操作方式 基本一致。而且都使用父类种的方法即可。