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
语法确保资源在操作完成后自动关闭。
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 提升Avalonia UI质感,跨平台图标库选型实践
· 突发,CSDN 崩了!程序员们开始慌了?
· C# 中委托和事件的深度剖析与应用场景
· 一个基于 .NET 8 + Ant Design Blazor 开发的简洁现代后台管理框架
· AppBox拖拽设计增删改查用户界面