当前位置: 首页 > 知识库问答 >
问题:

Java文件-I/O不读取

鲁鸿
2023-03-14

我在维护java为我读取文件时遇到问题。我有一本书。包含所有丹麦岛屿的txt文件,但不管我如何尝试,它都不会显示在控制台中。

这是带有main方法的类。从这里它读取文件并拆分行以将数据放入ArrayList中。

public class DanishIslandFileReader {

private File inFile;
private List<DanishIsland> islandList;

public DanishIslandFileReader(String fName) {
    inFile = new File(fName);
}

private void readFile() {
    islandList = new ArrayList<DanishIsland>();
    Scanner scan = null;
    try {
        scan = new Scanner(inFile);
    } catch (FileNotFoundException fnfe) {
        System.out.println(fnfe);
    }
    while (scan.hasNext()) {
        String line = scan.nextLine();
        String[] tokens = line.split(" ");

        String name = tokens[0];
        double circ = Double.parseDouble(tokens[1]);
        double area = Double.parseDouble(tokens[2]);
        int addr = Integer.parseInt(tokens[3]);
        int adkm = Integer.parseInt(tokens[4]);

        DanishIsland island = new DanishIsland(name, circ, area, addr, adkm);
        System.out.println(island.toString());
        islandList.add(island);
    }

    scan.close();
}

public List<?> getList() {
    return islandList;
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws FileNotFoundException {
    System.out.println(new File(".").getAbsolutePath());
//        DanishIslandFileReader fr = new DanishIslandFileReader("Islands punktum.txt");
    DanishIslandFileReader fr = new DanishIslandFileReader("Islands komma.txt");
    fr.readFile();

    System.out.println("Result:\n" + fr.getList());

}

}

当行被拆分后,它将通过另一个类,该类将数据转换为字符串,并将其放入另一个Arraylist,该Arraylist将在控制台中打印。

public class DanishIsland {

private String name;
private double circumference;
private double area;
private int addresses;
private int addrPerKm2;

public DanishIsland(String name, double circumference, double area,
        int addresses, int addrPerKm2) {
    super();
    this.name = name;
    this.circumference = circumference;
    this.area = area;
    this.addresses = addresses;
    this.addrPerKm2 = addrPerKm2;
}

public String getName() {
    return name;
}

public double getCircumference() {
    return circumference;
}

public double getArea() {
    return area;
}

public int getAddresses() {
    return addresses;
}

public int getAddrPerKm2() {
    return addrPerKm2;
}

@Override
public String toString() {
    StringBuilder builder = new StringBuilder();
    builder.append(name);
    builder.append("\t");
    builder.append(circumference);
    builder.append("\t");
    builder.append(area);
    builder.append("\t");
    builder.append(addresses);
    builder.append("\t");
    builder.append(addrPerKm2);
    builder.append("\n");
    return builder.toString();
}

}

我不会得到任何错误或异常,程序会一直运行,直到它认为列表已经打印出来。

问题是这个列表是空的,我似乎无法从列表中做出任何形式的“sout”。txt文件。我做错了什么?

Lolland 298,388 1234,96 38919 32
Bornholm 108,047 588,025 27125 46
Falster 145,926 516,268 26654 52
Mors 139,254 361,745 12374 34

共有1个答案

路雅懿
2023-03-14

你试过调试它吗?我认为它没有进入

while (scan.hasNext())

因为扫描。hasNext返回false。这可能是文件权限问题。

这也可能是相关的:为什么hasNext()False,但hasNextLine()是True?

 类似资料:
  • 主要内容:实例,从屏幕上读取用户输入,实例,从文件上读取内容,实例Scala 进行文件写操作,直接用的都是 java中 的 I/O 类 (java.io.File): 实例 import java. io. _ object Test {     def main (args : Array [String ] ) {       val writer = new PrintWriter ( new File ( "test.txt" ) )       wri

  • 主要内容:简单模式,实例,完全模式,实例,实例Lua I/O 库用于读取和处理文件。分为简单模式(和C一样)、完全模式。 简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。 完全模式(complete model) 使用外部的文件句柄来实现。它以一种面对对象的形式,将所有的文件操作定义为文件句柄的方法 简单模式在做一些简单的文件操作时较为合适。但是在进行一些高级的文件操作的时候,简单模

  • 本文向大家介绍Python文件I / O,包括了Python文件I / O的使用技巧和注意事项,需要的朋友参考一下 示例 file不再是中的内置名称3.x(open仍然有效)。 文件I / O的内部详细信息已移至标准库io模块,这也是以下内容的新主目录StringIO: 文件模式(文本还是二进制)现在确定通过读取文件产生的数据类型(以及写入所需的类型): 文本文件的编码默认为返回的。要明确指定编码

  • 本教程讲述的是 JDK 7 版本以来引入的新的 I/O 机制(也被称为 NIO.2)。 相关的包在 java.nio.file ,其中 java.nio.file.attribute 提供对文件 I/O 以及访问默认文件系统的全面支持。虽然 API 有很多类,但你只需要重点关注几个。你会看到,这个 API 是非常直观和易于使用。 什么是路径(Path)?在其他文件系统的实际是怎么样的? 文件系统是

  • Lua I/O 库用于读取和处理文件。分为简单模式(和C一样)、完全模式。 简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。 完全模式(complete model) 使用外部的文件句柄来实现。它以一种面对对象的形式,将所有的文件操作定义为文件句柄的方法 简单模式在做一些简单的文件操作时较为合适。但是在进行一些高级的文件操作的时候,简单模

  • Scala 进行文件写操作,直接用的都是 java中 的 I/O 类 (java.io.File): import java.io._ object Test { def main(args: Array[String]) { val writer = new PrintWriter(new File("test.txt" )) writer.write("本站