使用PrintWriter处理数组:提取无效数据存入文件并展示
完整实现方案:筛选非数字错误数据并写入文件
我来帮你完成这个需求的完整代码实现,核心围绕读取文件、校验数据、输出错误内容这几个核心步骤展开。先看可直接运行的完整代码:
import java.util.*; import java.io.*; public class MorenoJonathonTranslator { public static void main(String[] args) { // 定义输入输出文件路径 String inputFilePath = "numbers.txt"; String outputFilePath = "wrong.txt"; ArrayList<String> wrongDataList = new ArrayList<>(); try (Scanner fileScanner = new Scanner(new File(inputFilePath))) { System.out.println("Original content (partial):"); // 逐行读取输入文件内容 while (fileScanner.hasNextLine()) { String line = fileScanner.nextLine().trim(); // 打印原始数据(如果文件过大,可添加行数限制避免刷屏) System.out.println(line); // 校验逻辑:空行或包含非数字字符的内容都判定为错误数据 if (line.isEmpty() || !line.matches("\\d+")) { wrongDataList.add(line); } } // 将错误数据写入wrong.txt并在控制台展示 try (PrintWriter writer = new PrintWriter(new FileWriter(outputFilePath))) { System.out.println("\n--- Wrong data found: ---"); for (String wrongData : wrongDataList) { System.out.println(wrongData); writer.println(wrongData); } System.out.println("\n错误数据已成功写入wrong.txt"); } catch (IOException e) { System.err.println("写入wrong.txt时出错:" + e.getMessage()); } } catch (FileNotFoundException e) { System.err.println("未找到numbers.txt文件:" + e.getMessage()); } catch (IOException e) { System.err.println("文件读取异常:" + e.getMessage()); } } }
关键细节说明
- 资源自动管理:用
try-with-resources语法处理文件流,不用手动关闭Scanner和PrintWriter,避免资源泄漏 - 数字校验规则:通过正则表达式
\\d+判断是否为纯数字,空行、包含字母/符号的行都会被标记为错误数据(可根据实际需求调整校验规则) - 异常友好提示:针对文件不存在、读写失败等场景添加了明确的错误提示,让程序更健壮
- 双端输出:同时在控制台展示错误数据,并写入
wrong.txt文件,满足需求里的展示+持久化要求
运行效果示例
假设numbers.txt内容如下:
12345 abc67 890 xyz 12a3
控制台会输出:
Original content (partial): 12345 abc67 890 xyz 12a3 --- Wrong data found: --- abc67 xyz 12a3 错误数据已成功写入wrong.txt
同时wrong.txt里会保存这些错误数据:
abc67 xyz 12a3
内容的提问来源于stack exchange,提问作者user9424437
相关产品推荐
相关产品推荐

