Java文件操作练习题详解:从基础读写到高效处理与目录管理
1. 读取一个文本文件的内容并打印到控制台
问题描述
编写一个Java程序,读取一个文本文件的内容,并将其内容打印到控制台。
实现思路
- 使用
FileReader类来读取文件。 - 使用
BufferedReader类来逐行读取文件内容。 - 将每一行内容打印到控制台。
示例代码
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFileAndPrint {
public static void main(String[] args) {
// 文件路径
String filePath = "example.txt";
// 使用BufferedReader逐行读取文件
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.out.println("文件读取失败: " + e.getMessage());
}
}
}
代码说明
FileReader用于打开文件,BufferedReader用于逐行读取。readLine()方法用于读取文件的每一行,当返回null时,表示文件已读取完毕。- 使用
try-with-resources语法确保资源在读取完成后自动关闭。
2. 将字符串写入一个文本文件
问题描述
编写一个Java程序,将一个字符串写入一个文本文件。
实现思路
- 使用
FileWriter类来写入文件。 - 如果文件不存在,会自动创建文件。
- 使用
BufferedWriter类来提高写入效率。
示例代码
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class WriteStringToFile {
public static void main(String[] args) {
// 文件路径
String filePath = "output.txt";
// 要写入的字符串
String content = "Hello, World!";
// 使用BufferedWriter写入文件
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
writer.write(content);
writer.newLine(); // 写入换行符
System.out.println("内容已写入文件: " + filePath);
} catch (IOException e) {
System.out.println("文件写入失败: " + e.getMessage());
}
}
}
代码说明
FileWriter用于打开文件,BufferedWriter用于高效写入。write()方法用于写入字符串,newLine()用于写入换行符。- 使用
try-with-resources语法确保资源在写入完成后自动关闭。
3. 复制一个文件的内容到另一个文件
问题描述
编写一个Java程序,将一个文件的内容复制到另一个文件。
实现思路
- 使用
FileReader和FileWriter分别读取源文件和写入目标文件。 - 使用
BufferedReader和BufferedWriter提高读写效率。 - 按行读取源文件内容并写入目标文件。
示例代码
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyFile {
public static void main(String[] args) {
// 源文件路径
String sourceFilePath = "source.txt";
// 目标文件路径
String targetFilePath = "target.txt";
try (BufferedReader reader = new BufferedReader(new FileReader(sourceFilePath));
BufferedWriter writer = new BufferedWriter(new FileWriter(targetFilePath))) {
String line;
while ((line = reader.readLine()) != null) {
writer.write(line);
writer.newLine(); // 写入换行符
}
System.out.println("文件复制完成!");
} catch (IOException e) {
System.out.println("文件复制失败: " + e.getMessage());
}
}
}
代码说明
- 使用
BufferedReader逐行读取源文件内容。 - 使用
BufferedWriter将内容写入目标文件。 - 使用
try-with-resources语法确保资源在操作完成后自动关闭。
4. 统计一个文本文件的行数
问题描述
编写一个Java程序,统计一个文本文件的行数。
实现思路
- 使用
FileReader和BufferedReader逐行读取文件。 - 每读取一行,计数器加1。
- 最终输出总行数。
示例代码
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class CountLines {
public static void main(String[] args) {
// 文件路径
String filePath = "example.txt";
int lineCount = 0;
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
lineCount++;
}
} catch (IOException e) {
System.out.println("文件读取失败: " + e.getMessage());
}
System.out.println("文件 " + filePath + " 的行数为: " + lineCount);
}
}
代码说明
- 使用
BufferedReader逐行读取文件。 - 每次调用
readLine()时,如果返回非null,则表示读取到一行,计数器加1。 - 使用
try-with-resources语法确保资源在读取完成后自动关闭。
5. 读取一个文件并将其内容转换为大写
问题描述
编写一个Java程序,读取一个文件的内容,并将其内容转换为大写后打印到控制台。
实现思路
- 使用
FileReader和BufferedReader逐行读取文件。 - 使用
String类的toUpperCase()方法将每一行内容转换为大写。 - 将转换后的内容打印到控制台。
示例代码
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ConvertToUpper {
public static void main(String[] args) {
// 文件路径
String filePath = "example.txt";
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line.toUpperCase());
}
} catch (IOException e) {
System.out.println("文件读取失败: " + e.getMessage());
}
}
}
代码说明
- 使用
BufferedReader逐行读取文件内容。 - 使用
toUpperCase()方法将每一行内容转换为大写。 - 使用
try-with-resources语法确保资源在读取完成后自动关闭。
6. 使用BufferedReader和BufferedWriter高效读写文件
问题描述
编写一个Java程序,使用BufferedReader和BufferedWriter高效读写文件。
实现思路
- 使用
BufferedReader逐行读取文件。 - 使用
BufferedWriter将内容写入另一个文件。 - 使用缓冲区提高读写效率。
示例代码
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class EfficientReadWrite {
public static void main(String[] args) {
// 源文件路径
String sourceFilePath = "source.txt";
// 目标文件路径
String targetFilePath = "target.txt";
try (BufferedReader reader = new BufferedReader(new FileReader(sourceFilePath));
BufferedWriter writer = new BufferedWriter(new FileWriter(targetFilePath))) {
String line;
while ((line = reader.readLine()) != null) {
writer.write(line);
writer.newLine(); // 写入换行符
}
System.out.println("文件读写完成!");
} catch (IOException e) {
System.out.println("文件读写失败: " + e.getMessage());
}
}
}
代码说明
- 使用
BufferedReader和BufferedWriter分别读取和写入文件。 - 使用缓冲区可以减少磁盘I/O操作,提高效率。
- 使用
try-with-resources语法确保资源在操作完成后自动关闭。
7. 删除一个指定的文件
问题描述
编写一个Java程序,删除一个指定的文件。
实现思路
- 使用
File类的delete()方法删除文件。 - 检查文件是否存在,如果不存在则提示用户。
示例代码
import java.io.File;
public class DeleteFile {
public static void main(String[] args) {
// 文件路径
String filePath = "example.txt";
File file = new File(filePath);
if (file.exists()) {
if (file.delete()) {
System.out.println("文件 " + filePath + " 已删除!");
} else {
System.out.println("文件删除失败!");
}
} else {
System.out.println("文件 " + filePath + " 不存在!");
}
}
}
代码说明
- 使用
File类表示文件。 - 使用
exists()方法检查文件是否存在。 - 使用
delete()方法删除文件。
8. 创建一个目录
问题描述
编写一个Java程序,创建一个目录。
实现思路
- 使用
File类的mkdir()方法创建单级目录。 - 使用
mkdirs()方法创建多级目录。
示例代码
import java.io.File;
public class CreateDirectory {
public static void main(String[] args) {
// 目录路径
String directoryPath = "testDir";
File directory = new File(directoryPath);
if (!directory.exists()) {
if (directory.mkdir()) {
System.out.println("目录 " + directoryPath + " 创建成功!");
} else {
System.out.println("目录创建失败!");
}
} else {
System.out.println("目录 " + directoryPath + " 已存在!");
}
}
}
代码说明
- 使用
File类表示目录。 - 使用
exists()方法检查目录是否存在。 - 使用
mkdir()方法创建单级目录。
9. 列出一个目录下的所有文件
问题描述
编写一个Java程序,列出一个目录下的所有文件。
实现思路
- 使用
File类的listFiles()方法获取目录下的所有文件和子目录。 - 遍历文件数组并打印文件名。
示例代码
import java.io.File;
public class ListFiles {
public static void main(String[] args) {
// 目录路径
String directoryPath = "testDir";
File directory = new File(directoryPath);
if (directory.exists() && directory.isDirectory()) {
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
System.out.println(file.getName());
}
} else {
System.out.println("目录为空!");
}
} else {
System.out.println("路径 " + directoryPath + " 不是一个有效的目录!");
}
}
}
代码说明
- 使用
File类表示目录。 - 使用
listFiles()方法获取目录下的所有文件和子目录。 - 使用
isDirectory()方法检查路径是否为目录。
10. 使用FileInputStream和FileOutputStream复制一个二进制文件
问题描述
编写一个Java程序,使用FileInputStream和FileOutputStream复制一个二进制文件。
实现思路
- 使用
FileInputStream读取二进制文件。 - 使用
FileOutputStream写入目标文件。 - 使用缓冲区提高读写效率。
示例代码
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyBinaryFile {
public static void main(String[] args) {
// 源文件路径
String sourceFilePath = "source.jpg";
// 目标文件路径
String targetFilePath = "target.jpg";
try (FileInputStream fis = new FileInputStream(sourceFilePath);
FileOutputStream fos = new FileOutputStream(targetFilePath)) {
byte[] buffer = new byte[1024]; // 缓冲区大小为1024字节
int length;
while ((length = fis.read(buffer)) != -1) {
fos.write(buffer, 0, length);
}
System.out.println("二进制文件复制完成!");
} catch (IOException e) {
System.out.println("文件复制失败: " + e.getMessage());
}
}
}
代码说明
- 使用
FileInputStream读取二进制文件。 - 使用
FileOutputStream写入目标文件。 - 使用缓冲区提高读写效率。
- 使用
try-with-resources语法确保资源在操作完成后自动关闭。
浙公网安备 33010602011771号