Java学习_IO
- 相对路径
- 依赖于当前项目所在位置
- 文件和目录
- 可以判断文件或目录的是否可读,可写,可执行
- 对目录而言,是否可执行表示能否列出它包含的文件和子目录。
-
创建和删除(临时)文件
static FilecreateTempFile(String prefix, String suffix)voiddeleteOnExit()
- 遍历文件和目录
- 目录使用mkdir 和 mkdirs创建 可用delete删除
- 使用
list()和listFiles()列出目录下的文件和子目录名 -
1 package cn.zss.IO; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 6 public class ListFilesTest { 7 public static void main(String[] args) { 8 File file = new File("E:\\23287\\Desktop\\file"); 9 printFiles(file); 10 } 11 12 static void printFiles(File file){ 13 if(file.isFile()){ 14 System.out.println("FILE: " + file.getName()); 15 }else{ 16 System.out.println("DIRC: " + file.getName()); 17 File[] files = file.listFiles(); 18 for(File file1 : files){ 19 printFiles(file1); 20 } 21 } 22 } 23 }
- Path
- Java标准库还提供了一个
Path对象,它位于java.nio.file包。Path对象和File对象类似,但操作更加简单
- Java标准库还提供了一个
-
InputStream
- Java 7引入的新的
try(resource)的语法,只需要编写try语句,让编译器自动为我们关闭资源 ByteArrayInputStream在内存中模拟一个字节流输入。-
1 package cn.zss.IO; 2 3 import java.io.*; 4 5 public class FileInputStreamTest { 6 7 public static void main(String[] args) throws IOException { 8 File file = new File("E:\\23287\\Desktop\\text.txt"); 9 InputStream inputStream = new FileInputStream(file); 10 int n; 11 byte[] buffer = new byte[1024]; 12 while ((n = inputStream.read(buffer)) != -1){ 13 System.out.println(new String(buffer, 0, n)); 14 } 15 inputStream.close(); 16 } 17 }
- Java 7引入的新的
-
OutputStream
- 同时操作多个
AutoCloseable资源时,在try(resource) { ... }语句中可以同时写出多个资源,用;隔开
- 同时操作多个
- Filter模式
-
操作Zip
- Reader
- 与InputStream对照
InputStream Reader 字节流,以 byte为单位字符流,以 char为单位读取字节(-1,0~255): int read()读取字符(-1,0~65535): int read()读到字节数组: int read(byte[] b)读到字符数组: int read(char[] c) - 使用
try (resource)结构时,当我们关闭Reader时,它会在内部自动调用InputStream的close()方法,所以,只需要关闭最外层的Reader对象即可。
- 与InputStream对照
-
Writer
-
Writer和OutputStream的区别如下:OutputStream Writer 字节流,以 byte为单位字符流,以 char为单位写入字节(0~255): void write(int b)写入字符(0~65535): void write(int c)写入字节数组: void write(byte[] b)写入字符数组: void write(char[] c)无对应方法 写入String: void write(String s)
-
- PrintStream和PrintWriter
PrintStream和OutputStream相比,除了添加了一组print()/println()方法,可以打印各种数据类型,比较方便外,它还有一个额外的优点,就是不会抛出IOException,这样我们在编写代码的时候,就不必捕获IOException。
-
使用Files类(java.nio.Files)

浙公网安备 33010602011771号