IO——就是输入输出(Input,Output)的缩写。
IO的本质就是数据在计算机中流动。
流的概念:数据流动,数据从源结点到目标结点的流动。
流的分类如下:
按操作数据单位:
- 字节流
- 字符流
按数据流的流向:
- 输入流
- 输出流
- 流中的数据
Java中的IO流有40多个子类,都是从4个抽象基类中继承的。
4个抽象基类分别是:
字节流(8 bit)
- InputStream 输入流
- OutputStream 输出流
字符流 (16 bit)
- Reader 输入流
- Writer 输出流
读写文件的步骤:
- 创建流对象,建立流通道
- 通过通道处理数据
- 关闭流通道,释放资源
具体读操作如下:
/*
* 读文件三大步:
1、使用文件输入流打开指定文件
2、读取文件数据
3、关闭输入流
*/
public void test1() throws Exception {
// 1、声明引用变量并复制null
FileReader fileReader = null;
// 2、try catch finall
try {
// 5、在try中创建对象
fileReader = new FileReader("test.txt");
// 6、处理数据
int ch = (char)fileReader.read(); //读一个字符
int linenum=1;
System.out.print(linenum+":");
while(ch != -1) {
//先处理读到的数据
if(ch==10) {
linenum++;
System.out.print(linenum+":");
}else {
System.out.print((char)ch);
}
//再继续读数据
ch = fileReader.read();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//3、在finall中关闭数据
if(fileReader != null) {
try {
fileReader.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
具体写操作如下:
/*
写操作三大步:
1、使用文件输出流打开指定文件
2、写入文件数据
3、关闭写入流
*
public void test3() {
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter("写文件.txt");
fileWriter.write('a');
fileWriter.write('b');
fileWriter.write('c');
fileWriter.write('d');
fileWriter.write('1');
fileWriter.write('2');
fileWriter.write('3');
fileWriter.write(10);
fileWriter.write(13);
fileWriter.write('a');
fileWriter.write('阿');
fileWriter.write('吧');
fileWriter.write('的');
} catch (Exception e) {
// TODO: handle exception
}finally{
if(fileWriter != null) {
try {
fileWriter.close();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
}
正常写,直接按照上面的三大步就可以。但是在实际中,由于各种原因,会发生各种异常,比如文件找不到,流没有关闭等等,所以用异常处理机制来捕获异常。如果有对异常不太熟悉的,可以查看异常处理资料。
本文只是对IOl流的基本了解,掌握基本的文件读写操作,下篇会对文件读写升级。