java IO操作
1.概览
| 分类 | 字节输入流 | 字节输出流 | 字符输入流 | 字符输出流 |
|---|---|---|---|---|
| 抽象基类 | InputStream | OutputStream | Reader | Writer |
| 访问文件 | FileInputStream | FileOutputStream | FileReader | FileWriter |
| 访问数组 | ByteArrayInputStream | ByteArrayOutputStream | CharArrayReader | CharArrayWriter |
| 访问管道 | PipedInputStream | PipedOutputStream | PipedReader | PipedWriter |
| 缓冲流 | BufferedInputStream | BufferedOutputStream | BufferedReader | BufferedWriter |
| 转换流 | InputStreamReader | OutputStreamWriter | ||
| 对象流 | ObjectInputStream | ObjectOutputStream | ||
| 抽象基类 | FilterInputStream | FilterOutputStream | FilterReader | FilterWriter |
| 打印流 | PrintStream | PrintWriter | ||
| 特殊流 | DataInputStream | DataOutputStream |
2.使用
2.1.概述
IDEA中,在@Test标注的单元测试方法下,File中相对路径的基础路径为模块名,而在main方法中,File中相对路径的基础路径为工程名
2.2.FileReader
FileReader fileReader = null;
try {
fileReader = new FileReader(new File("hello.txt"));
// 无参的read方法一次只能读一个字符(返回值为int类型,可以强转为char类型)
char[] arr = new char[10];
// 传入字符数组,则会将内容读入到字符数组中,能装满就装满,返回值为装入多少个字符
int count;
while ((count = fileReader.read(arr)) != -1) {
// 注意要调用String的此种构造参数,否则如果读不满,会将剩下的脏数据输出(每次填入char数组时不会清空,只会覆盖对应位置的数据)
System.out.print(new String(arr, 0, count));
}
fileReader.read();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileReader != null) {
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.3.FileWriter
FileWriter fileWriter = null;
try {
// 如果file文件不存在,则会自动创建此文件
// 如果file文件存在,则默认会覆盖此文件内容,FileWriter构造器还有第二个参数(boolean类型,标识是否追加,为true则表示追加内容,不会覆盖原有内容)
fileWriter = new FileWriter("hello1.txt", true);
fileWriter.write("123");
} catch (Exception e) {
} finally {
if (fileWriter != null) {
try {
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

浙公网安备 33010602011771号