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程序,将一个文件的内容复制到另一个文件。

实现思路

  • 使用FileReaderFileWriter分别读取源文件和写入目标文件。
  • 使用BufferedReaderBufferedWriter提高读写效率。
  • 按行读取源文件内容并写入目标文件。

示例代码

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程序,统计一个文本文件的行数。

实现思路

  • 使用FileReaderBufferedReader逐行读取文件。
  • 每读取一行,计数器加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程序,读取一个文件的内容,并将其内容转换为大写后打印到控制台。

实现思路

  • 使用FileReaderBufferedReader逐行读取文件。
  • 使用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. 使用BufferedReaderBufferedWriter高效读写文件

问题描述

编写一个Java程序,使用BufferedReaderBufferedWriter高效读写文件。

实现思路

  • 使用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());
        }
    }
}

代码说明

  • 使用BufferedReaderBufferedWriter分别读取和写入文件。
  • 使用缓冲区可以减少磁盘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. 使用FileInputStreamFileOutputStream复制一个二进制文件

问题描述

编写一个Java程序,使用FileInputStreamFileOutputStream复制一个二进制文件。

实现思路

  • 使用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语法确保资源在操作完成后自动关闭。
posted @ 2025-04-06 09:44  软件职业规划  阅读(16)  评论(0)    收藏  举报
相关博文:
阅读排行:
· 提升Avalonia UI质感,跨平台图标库选型实践
· 突发,CSDN 崩了!程序员们开始慌了?
· C# 中委托和事件的深度剖析与应用场景
· 一个基于 .NET 8 + Ant Design Blazor 开发的简洁现代后台管理框架
· AppBox拖拽设计增删改查用户界面
点击右上角即可分享
微信分享提示