java对指定目录下文件读写操作介绍


在Java中,对指定目录下的文件进行读写操作是一个常见的需求。这通常涉及到`java.io`和`java.nio`包中的类。下面我将分别介绍如何使用这两个包来进行文件的读写操作。

### 使用`java.io`包

#### 文件读取

对于文件读取,可以使用`FileInputStream`或`FileReader`(对于文本文件)。这里以`FileReader`为例:


import java.io.FileReader;
import java.io.IOException;

public class ReadFileExample {
    public static void main(String[] args) {
        FileReader fileReader = null;
        try {
            fileReader = new FileReader("path/to/your/file.txt");
            int character;

            while ((character = fileReader.read()) != -1) {
                System.out.print((char) character);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fileReader != null) {
                try {
                    fileReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

#### 文件写入

对于文件写入,可以使用`FileOutputStream`或`FileWriter`(对于文本文件)。这里以`FileWriter`为例:


import java.io.FileWriter;
import java.io.IOException;

public class WriteFileExample {
    public static void main(String[] args) {
        FileWriter fileWriter = null;
        try {
            fileWriter = new FileWriter("path/to/your/file.txt", true); // 第二个参数为true表示追加模式
            fileWriter.write("Hello, World!");
            fileWriter.flush(); // 确保内容被写入文件
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fileWriter != null) {
                try {
                    fileWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

### 使用`java.nio`包

`java.nio`包(也称为NIO,即New Input/Output)提供了一种更高效的方式来处理文件和其他I/O操作。

#### 文件读取

使用`Files`类和`Buffers`:


import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
import java.io.IOException;

public class ReadFileNIOExample {
    public static void main(String[] args) {
        try {
            String content = new String(Files.readAllBytes(Paths.get("path/to/your/file.txt")), StandardCharsets.UTF_8);
            System.out.println(content);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

#### 文件写入

使用`Files`类和`Buffers`:


import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
import java.io.IOException;

public class WriteFileNIOExample {
    public static void main(String[] args) {
        String data = "Hello, NIO!";
        try {
            Files.write(Paths.get("path/to/your/file.txt"), data.getBytes(StandardCharsets.UTF_8));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

注意:这些示例代码中的`"path/to/your/file.txt"`应该替换为你想要读写文件的实际路径。对于`java.nio`包中的示例,它们使用了`Files`类提供的方法,这些方法在处理大型文件时可能比`java.io`中的方法更高效,因为它们可以处理文件内容的分块读写。然而,对于简单的操作,两种方法都可以使用。