Bootstrap

Java基础编程500题——文件和IO流

💥 该系列属于【Java基础编程500题】专栏,如您需查看Java基础的其他相关题目,请您点击左边的连接

目录

1. 编写一个Java程序,在当前用户桌面创建一个名为"example.txt"的文件,并向文件中写入一行文字"Hello, World!"。

2. 编写一个Java程序,将用户桌面上的"example.txt"文件复制到当前目录下的"copy_example.txt"。

3. 编写一个Java程序,获取用户桌面上的"example.txt"文件的名称、大小、最后修改时间。

4. 编写一个Java程序,在用户桌面创建一个名为"test_folder"的文件夹,然后删除该文件夹。

5. 编写一个Java程序,列出当前目录上的所有文件和文件夹的名称。

6. 编写一个Java程序,将用户桌面上的"example.txt"文件重命名为"new_example.txt"。

7. 编写一个Java程序,列出用户桌面上的所有.txt文件。

8. 编写一个Java程序,删除用户桌面上的一个名为"test_folder"的文件夹及其所有内容。(递归删除)

9. 编写一个Java程序,读取用户桌面上的"new_example.txt"文件的内容,并将其内容输出到控制台。

10. 编写一个Java程序,读取用户桌面上的"numbers.txt"文件,该文件包含一系列数字,一行一个。程序需要将这些数字排序后,将排序结果保存到新的文件"sorted_numbers.txt"中。

11. 编写一个Java程序,读取用户桌面上的"example.txt"文件,将文件中的所有"oldString"替换为"newString",并将结果保存到"example_replaced.txt"文件中。

12. 编写一个Java程序,读取一个文本文件的内容,并将其内容反转后写入到另一个文件。

13. 编写一个Java程序,统计一个文本文件中每个单词出现的次数。


 ✨✨  返回题目目录 ✨ ✨ 

Java基础编程500题


1. 编写一个Java程序,在当前用户桌面创建一个名为"example.txt"的文件,并向文件中写入一行文字"Hello, World!"。

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        System.out.println(System.getProperty("user.home"));
        try {
            // 创建文件对象
            File file = new File(System.getProperty("user.home") + "\\Desktop\\example.txt");
            // 创建文件
            boolean created = file.createNewFile();
            if (created) {
                // 写入内容
                FileOutputStream fos = new FileOutputStream(file);
                String content = "Hello, World!";
                fos.write(content.getBytes());
                fos.close();
                System.out.println("文件创建并写入成功!");
            } else {
                System.out.println("文件已存在!");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2. 编写一个Java程序,将用户桌面上的"example.txt"文件复制到当前目录下的"copy_example.txt"。

public class Main {
    public static void main(String[] args) {
        try {
            // 源文件和目标文件
            File sourceFile = new File(System.getProperty("user.home") + "\\Desktop\\example.txt");
            File targetFile = new File("copy_example.txt");

            // 文件复制
            FileInputStream fis = new FileInputStream(sourceFile);
            FileOutputStream fos = new FileOutputStream(targetFile);
            byte[] buffer = new byte[1024];
            int length;
            while ((length = fis.read(buffer)) > 0) {
                fos.write(buffer, 0, length);
            }
            fis.close();
            fos.close();
            System.out.println("文件复制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3. 编写一个Java程序,获取用户桌面上的"example.txt"文件的名称、大小、最后修改时间。

import java.io.File;
import java.text.SimpleDateFormat;

public class Main {
    public static void main(String[] args) {
        File file = new File(System.getProperty("user.home") + "\\Desktop\\example.txt");
        if (file.exists()) {
            System.out.println("文件名称:" + file.getName());
            System.out.println("文件大小:" + file.length() + " 字节");
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println("最后修改时间:" + sdf.format(file.lastModified()));
        } else {
            System.out.println("文件不存在!");
        }
    }
}

4. 编写一个Java程序,在用户桌面创建一个名为"test_folder"的文件夹,然后删除该文件夹。

import java.io.File;

public class Main {
    public static void main(String[] args) {
        File folder = new File(System.getProperty("user.home") + "\\Desktop\\test_folder");
        if (folder.mkdir()) {
            System.out.println("文件夹创建成功!");
            if (folder.delete()) {
                System.out.println("文件夹删除成功!");
            } else {
                System.out.println("文件夹删除失败!");
            }
        } else {
            System.out.println("文件夹创建失败!");
        }
    }
}

5. 编写一个Java程序,列出当前目录上的所有文件和文件夹的名称。

import java.io.File;

public class Main {
    public static void main(String[] args) {
        File desktop = new File("./");
        if (desktop.isDirectory()) {
            String[] files = desktop.list();
            System.out.println("当前目录上的所有文件和文件夹:");
            for (String file : files) {
                System.out.println(file);
            }
        } else {
            System.out.println("路径不是目录!");
        }
    }
}

6. 编写一个Java程序,将用户桌面上的"example.txt"文件重命名为"new_example.txt"。

import java.io.File;

public class Main {
    public static void main(String[] args) {
        File oldFile = new File(System.getProperty("user.home") + "\\Desktop\\example.txt");
        File newFile = new File(System.getProperty("user.home") + "\\Desktop\\new_example.txt");
        if (oldFile.renameTo(newFile)) {
            System.out.println("文件重命名成功!");
        } else {
            System.out.println("文件重命名失败!");
        }
    }
}

7. 编写一个Java程序,列出用户桌面上的所有.txt文件。

import java.io.File;
import java.io.FilenameFilter;

public class Main {
    public static void main(String[] args) {
        File desktop = new File(System.getProperty("user.home") + "\\Desktop");
        FilenameFilter filter = (dir, name) -> name.endsWith(".txt");
        File[] txtFiles = desktop.listFiles(filter);
        System.out.println("用户桌面上的所有.txt文件:");
        for (File file : txtFiles) {
            System.out.println(file.getName());
        }
    }
}

8. 编写一个Java程序,删除用户桌面上的一个名为"test_folder"的文件夹及其所有内容。(递归删除)

import java.io.File;

public class Main {
    public static void main(String[] args) {
        File folder = new File(System.getProperty("user.home") + "\\Desktop\\test_folder");
        if (deleteDirectory(folder)) {
            System.out.println("文件夹及其内容已删除!");
        } else {
            System.out.println("删除失败!");
        }
    }

    public static boolean deleteDirectory(File dir) {
        if (dir.isDirectory()) {
            File[] children = dir.listFiles();
            for (File child : children) {
                deleteDirectory(child);
            }
        }
        return dir.delete();
    }
}

9. 编写一个Java程序,读取用户桌面上的"new_example.txt"文件的内容,并将其内容输出到控制台。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        String filePath = System.getProperty("user.home") + "\\Desktop\\new_example.txt";
        try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
            String line;
            System.out.println("文件内容:");
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

10. 编写一个Java程序,读取用户桌面上的"numbers.txt"文件,该文件包含一系列数字,一行一个。程序需要将这些数字排序后,将排序结果保存到新的文件"sorted_numbers.txt"中。

import java.io.*;
import java.util.Arrays;
import java.util.Comparator;

public class Main {
    public static void main(String[] args) {
        String inputFilePath = System.getProperty("user.home") + "\\Desktop\\numbers.txt";
        String outputFilePath = System.getProperty("user.home") + "\\Desktop\\sorted_numbers.txt";

        try {
            // 读取文件内容
            BufferedReader reader = new BufferedReader(new FileReader(inputFilePath));
            String line;
            StringBuilder content = new StringBuilder();
            while ((line = reader.readLine()) != null) {
                content.append(line).append("\n");
            }
            reader.close();

            // 将内容分割成数组并排序
            String[] numbers = content.toString().split("\n");

            Arrays.sort(numbers, new Comparator<String>() {
                @Override
                public int compare(String o1, String o2) {
                    return Integer.parseInt(o1)-Integer.parseInt(o2);
                }
            });

            // 写入排序后的内容到新文件
            BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilePath));
            for (String number : numbers) {
                writer.write(number);
                writer.newLine();
            }
            writer.close();

            System.out.println("数字已排序并保存到文件 " + outputFilePath);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

11. 编写一个Java程序,读取用户桌面上的"example.txt"文件,将文件中的所有"oldString"替换为"newString",并将结果保存到"example_replaced.txt"文件中。

import java.io.*;

public class Main {
    public static void main(String[] args) {
        String inputFilePath = System.getProperty("user.home") + "\\Desktop\\example.txt";
        String outputFilePath = System.getProperty("user.home") + "\\Desktop\\example_replaced.txt";
        String oldString = "oldString";
        String newString = "newString";

        try {
            BufferedReader reader = new BufferedReader(new FileReader(inputFilePath));
            BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilePath));
            String line;
            while ((line = reader.readLine()) != null) {
                line = line.replace(oldString, newString);
                writer.write(line);
                writer.newLine();
            }
            reader.close();
            writer.close();
            System.out.println("文件内容替换完成,并保存到 " + outputFilePath);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

12. 编写一个Java程序,读取一个文本文件的内容,并将其内容反转后写入到另一个文件。

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        // 源文件路径
        File srcFile = new File("src.txt");
        // 目标文件路径
        File destFile = new File("dest.txt");
        try {
            reverseContent(srcFile, destFile);
            System.out.println("文件内容反转成功!");
        } catch (IOException e) {
            System.out.println("文件内容反转失败:" + e.getMessage());
        }
    }

    private static void reverseContent(File src, File dest) throws IOException {
        List<String> lines = new ArrayList<>();
        BufferedReader br = new BufferedReader(new FileReader(src));
        String line;
        while ((line = br.readLine()) != null) {
            lines.add(line);
        }
        br.close();

        BufferedWriter bw = new BufferedWriter(new FileWriter(dest));
        for (int i = lines.size() - 1; i >= 0; i--) {
            bw.write(lines.get(i));
            bw.newLine();
        }
        bw.close();
    }
}

13. 编写一个Java程序,统计一个文本文件中每个单词出现的次数。

import java.io.*;
import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        // 文件路径
        File file = new File("src.txt");
        try {
            Map<String, Integer> wordCount = countWords(file);
            System.out.println("单词统计结果:");
            for (Map.Entry<String, Integer> entry : wordCount.entrySet()) {
                System.out.println(entry.getKey() + ":" + entry.getValue());
            }
        } catch (IOException e) {
            System.out.println("统计单词数量失败:" + e.getMessage());
        }
    }

    private static Map<String, Integer> countWords(File file) throws IOException {
        Map<String, Integer> wordCount = new HashMap<>();
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;
        while ((line = br.readLine()) != null) {
            String[] words = line.split("\\s+");
            for (String word : words) {
                wordCount.put(word, wordCount.getOrDefault(word, 0) + 1);
            }
        }
        br.close();
        return wordCount;
    }
}

;