更新时间:2022-09-07 10:11:49 来源:极悦 浏览963次
在Java教程中,Java文件读写的方法是最基础的课程。
让我们从使用FileReader和FileWriter类开始:
String directory = System.getProperty("user.home");
String fileName = "sample.txt";
String absolutePath = directory + File.separator + fileName;
// Write the content in file
try(FileWriter fileWriter = new FileWriter(absolutePath)) {
String fileContent = "This is a sample text.";
fileWriter.write(fileContent);
fileWriter.close();
} catch (IOException e) {
// Cxception handling
}
// Read the content from file
try(FileReader fileReader = new FileReader(absolutePath)) {
int ch = fileReader.read();
while(ch != -1) {
System.out.print((char)ch);
fileReader.close();
}
} catch (FileNotFoundException e) {
// Exception handling
} catch (IOException e) {
// Exception handling
}
这两个类都接受一个字符串,在它们的构造函数中表示文件的路径。您还可以传递一个File对象以及一个FileDescriptor.
该write()方法写入一个有效的字符序列 - a String, a char[]。此外,它可以编写一个char表示为int.
该read()方法逐个字符地读取并返回,while例如,允许我们在循环中使用读取的数据。
不要忘记在使用后关闭这两个类!
使用BufferedReader和BufferedWriter类:
String directory = System.getProperty("user.home");
String fileName = "sample.txt";
String absolutePath = directory + File.separator + fileName;
// Write the content in file
try(BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(absolutePath))) {
String fileContent = "This is a sample text.";
bufferedWriter.write(fileContent);
} catch (IOException e) {
// Exception handling
}
// Read the content from file
try(BufferedReader bufferedReader = new BufferedReader(new FileReader(absolutePath))) {
String line = bufferedReader.readLine();
while(line != null) {
System.out.println(line);
line = bufferedReader.readLine();
}
} catch (FileNotFoundException e) {
// Exception handling
} catch (IOException e) {
// Exception handling
}
使用FileInputStream和FileOutputStream类:
String directory = System.getProperty("user.home");
String fileName = "sample.txt";
String absolutePath = directory + File.separator + fileName;
// write the content in file
try(FileOutputStream fileOutputStream = new FileOutputStream(absolutePath)) {
String fileContent = "This is a sample text.";
fileOutputStream.write(fileContent.getBytes());
} catch (FileNotFoundException e) {
// exception handling
} catch (IOException e) {
// exception handling
}
// reading the content of file
try(FileInputStream fileInputStream = new FileInputStream(absolutePath)) {
int ch = fileInputStream.read();
while(ch != -1) {
System.out.print((char)ch);
ch = fileInputStream.read();
}
} catch (FileNotFoundException e) {
// exception handling
} catch (IOException e) {
// exception handling
}
使用BufferedInputStream和BufferedOutputStream类:
String directory = System.getProperty("user.home");
String fileName = "sample.txt";
String absolutePath = directory + File.separator + fileName;
// write the content in file
try(BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(absolutePath))) {
String fileContent = "This is a sample text.";
bufferedOutputStream.write(fileContent.getBytes());
} catch (IOException e) {
// exception handling
}
// read the content from file
try(BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(absolutePath))) {
int ch = bufferedInputStream.read();
while(ch != -1) {
System.out.print((char)ch);
ch = bufferedInputStream.read();
}
} catch (FileNotFoundException e) {
// exception handling
} catch (IOException e) {
// exception handling
}
使用java.nio类:
String directory = System.getProperty("user.home");
String fileName = "sample.txt";
String content = "This is a sample text.";
Path path = Paths.get(directory, fileName);
try {
Files.write(path, content.getBytes(), StandardOpenOption.CREATE);
} catch (IOException e) {
// exception handling
}
try {
List<String> list = Files.readAllLines(path);
list.forEach(line -> System.out.println(line));
} catch (IOException e) {
// exception handling
}
另一种通过Files类检索内容的方法(如果您不读取文本数据则更重要)是使用该readAllBytes方法将数据读入字节数组:
try {
byte[] data = Files.readAllBytes(path);
System.out.println(new String(data));
} catch (IOException e) {
// exception handling
}
如果您有兴趣使用带有的流java.nio,您还可以使用该类提供的以下方法Files:
Files.newBufferedReader(path)
Files.newBufferedWriter(path, options)
Files.newInputStream(path, options)
Files.newOutputStream(path, options)
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习