Java如何实现运行时让用户传入CSV文件供Scanner读取
实现方案
你可以先通过System.in对应的Scanner读取用户输入的CSV文件绝对/相对路径,校验文件存在且可读后,再构造文件对应的Scanner实例读取内容,不需要预先在代码里写死文件路径。
完整修改后代码
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class Main { public static void main(String[] args) { // 第一步:先接收用户输入的文件路径 Scanner inputScanner = new Scanner(System.in); System.out.print("请输入CSV文件的完整路径:"); String filePath = inputScanner.nextLine().trim(); File csvFile = new File(filePath); // 校验文件合法性 if (!csvFile.exists() || !csvFile.isFile() || !csvFile.canRead()) { System.out.println("错误:文件不存在或无读取权限,请检查路径"); inputScanner.close(); return; } Scanner fileScanner = null; try { // 构造文件读取的Scanner fileScanner = new Scanner(csvFile); // 原有校验逻辑不变 while (fileScanner.hasNextLine()) { String checkString = fileScanner.nextLine(); boolean testOne = checkString.contains("Text from CSV line"); if (testOne) { String removingExtraCharacters = checkString.replaceAll("[^\\d.$]", ""); System.out.println(removingExtraCharacters); } } } catch (FileNotFoundException e) { System.out.println("读取文件失败:" + e.getMessage()); } finally { // 资源关闭 if (fileScanner != null) { fileScanner.close(); } inputScanner.close(); } } }
关键说明
- 程序启动后会先打印路径输入提示,你可以直接把CSV文件拖到终端窗口,会自动补全完整路径,回车即可开始读取
- 额外加了文件合法性校验,避免非法路径直接抛出未捕获异常导致程序崩溃
- 原有CSV行的校验、处理逻辑完全保留,不需要修改原有业务逻辑
内容的提问来源于stack exchange,提问作者bennydabull
相关产品推荐
相关产品推荐

