Java之IO学习(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014252478/article/details/82496477

1、磁盘操作

File 类可以用于表示文件和目录的信息,但是它不表示文件的内容。

递归地列出一个目录下所有文件

public static void listAllFiles(File dir) {
    if (dir == null || !dir.exists()) {
        return;
    }
    if (dir.isFile()) {
        System.out.println(dir.getName());
        return;
    }
    for (File file : dir.listFiles()) {
        listAllFiles(file);
    }
}

2、字节操作

实现文件复制

public static void copyFile(String src, String dist) throws IOException {
   FileInputStream in = new FileInputSteam(src);
   FileOutputStream out = new FileOutputStream(dist);
   byte[] buffer = new byte[20 * 1024];

   // read() 最多读取 buffer.length 个字节
   // 返回的是实际读取的个数
   // 返回 -1 的时候表示读到 eof,即文件尾
   while(in.read(buffer, 0, buffer.length) != -1){
      out.write(buffer);
   }
   in.close();
   out.close();
}

3、字符操作

编码解码

(1)String的编码方式

String str1 = "中文";
byte[] bytes = str1.getBytes("UTF-8");
String str2 = new String(bytes, "UTF-8");
System.out.println(str2);

(2)实现逐行输出文本文件的内容

public static void readFileContent(String, filePath) throws IOException{
   FileReader fileReader = new FileReader(filePath);
   BufferedReader bufferReader = new BufferReader(fileReader);
   
   String line;
   while((line = bufferedReader.readLine()) != null){
       System.out.println(line);
   }
   // 装饰者模式使得 BufferedReader 组合了一个 Reader 对象
   // 在调用 BufferedReader 的 close() 方法时会去调用 Reader 的 close() 方法
   // 因此只要一个 close() 调用即可
   bufferedReader.close();
}

猜你喜欢

转载自blog.csdn.net/u014252478/article/details/82496477