java如何txt文件
读取文本文件
使用 BufferedReader 和 FileReader 可以逐行读取文本文件内容。以下是示例代码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFile {
public static void main(String[] args) {
String filePath = "example.txt";
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
写入文本文件
使用 BufferedWriter 和 FileWriter 可以将内容写入文本文件。如果文件不存在,会自动创建。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class WriteFile {
public static void main(String[] args) {
String filePath = "output.txt";
try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath))) {
bw.write("Hello, World!");
bw.newLine();
bw.write("This is a new line.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
追加内容到文本文件
通过设置 FileWriter 的第二个参数为 true,可以在文件末尾追加内容。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class AppendFile {
public static void main(String[] args) {
String filePath = "output.txt";
try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath, true))) {
bw.write("Appended text.");
bw.newLine();
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用 Files 类读写文件
Java 7 引入的 Files 类提供了更简洁的文件读写方法。
读取文件内容为字符串列表:
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.io.IOException;
public class ReadWithFiles {
public static void main(String[] args) {
String filePath = "example.txt";
try {
List<String> lines = Files.readAllLines(Paths.get(filePath));
for (String line : lines) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
写入内容到文件:
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
public class WriteWithFiles {
public static void main(String[] args) {
String filePath = "output.txt";
List<String> lines = Arrays.asList("Line 1", "Line 2", "Line 3");
try {
Files.write(Paths.get(filePath), lines);
} catch (IOException e) {
e.printStackTrace();
}
}
}
处理大文件
对于大文件,逐行处理可以避免内存溢出。以下是使用流式处理的示例:
import java.nio.file.Files;
import java.nio.file.Paths;
import java.io.IOException;
import java.util.stream.Stream;
public class LargeFile {
public static void main(String[] args) {
String filePath = "largefile.txt";
try (Stream<String> stream = Files.lines(Paths.get(filePath))) {
stream.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
}
文件编码处理
如果文件不是默认编码(UTF-8),可以指定编码方式。以下是使用 InputStreamReader 和 OutputStreamWriter 的示例:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.io.IOException;
public class EncodingExample {
public static void main(String[] args) {
String filePath = "example.txt";
try (BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream(filePath), StandardCharsets.ISO_8859_1))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}






