Java中使用File.separator读取文件无法遍历所有行的解决方法
问题根源
你犯了一个关键错误:使用了Scanner(String source)构造方法,这个方法的作用是扫描传入的字符串本身,而非该路径指向的文件。所以不管你用File.separator还是直接写路径,只要传给Scanner的是字符串路径,它只会把路径字符串当成内容输出,和文件实际内容无关。
你说直接写路径时代码正常,大概率是当时误将路径包装成了File对象传入Scanner(而非直接传字符串),才会正确读取文件。
解决方案
要读取文件内容,必须将路径转换为文件对象后传入Scanner,或者使用更现代的NIO方式读取。
方式1:使用File对象配合Scanner
import java.io.File; import java.util.Scanner; public class ReadFile { public static void main(String[] args) { String path = "C:" + File.separator + "testFolder" + File.separator + "one.txt"; try (Scanner sc = new Scanner(new File(path))) { // 使用try-with-resources自动关闭资源 while (sc.hasNextLine()) { System.out.println(sc.nextLine()); } } catch (Exception e) { e.printStackTrace(); } } }
方式2:Java 7+推荐的NIO方式
import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; public class ReadFile { public static void main(String[] args) { String path = "C:" + File.separator + "testFolder" + File.separator + "one.txt"; try { List<String> lines = Files.readAllLines(Paths.get(path)); for (String line : lines) { System.out.println(line); } } catch (Exception e) { e.printStackTrace(); } } }
注意:使用文件操作时一定要处理异常,并且确保资源被正确关闭(try-with-resources是推荐的方式)。
内容的提问来源于stack exchange,提问作者Ami
相关产品推荐
相关产品推荐

