【问题标题】:How can I read a file in Java如何在 Java 中读取文件
【发布时间】:2023-03-18 16:00:02
【问题描述】:

我正在用 Java 创建一个程序,我想读取一个名为“medicos.txt”的文件。阅读文件后,我想保存所有信息。问题是当程序开始读取文件时,我不知道为什么它会在函数中间转到另一个函数。这是我的代码:

List<Zona> listaZonas;
final String NOMBRE_FICHERO = "files/medicos.txt";
final String NOMBRE_FICHERO_DAT = "files/medicos2.dat";

public FicheroZonas() {
    listaZonas = leerClaseFichero();
    // leerClaseFichero();
}

public List<Zona> getListaZonas() {
    return listaZonas;
}

public List<Zona> leerClaseFichero() {
    String linea = " ";
    listaZonas = new ArrayList<>();
    Zona zona = null;

    try (BufferedReader in = new BufferedReader(new FileReader(NOMBRE_FICHERO))) {

        while ((linea = in.readLine()) != null) {
            zona = leerZona(linea);

            if (zona != null) {
                listaZonas.add(zona);
            }
        }
    } catch (FileNotFoundException e) {
        System.out.println("Fichero no encontrado");
    } catch (IOException e) {
        System.out.println("Error al leer el fichero");
    }
    return listaZonas;
}

private Zona leerZona(String linea) {
    String[] zonas = linea.split("[$]");
    List<Medico> listaMedicos = new ArrayList<>();
    String[] strMedicos = zonas[2].split("[%]");

    for (int i = 0; i < strMedicos.length; i++) {
        String datos[] = strMedicos[i].split("[&]");
        Medico medico = new Medico(datos[0], datos[1], datos[2]);
        listaMedicos.add(medico);
    }
    Zona zona = new Zona(zonas[0], listaMedicos);

    return zona;
}

在该代码中,在执行String[] strMedicos = zonas[2].split("[%]"); 之后,它转到 catch (IOException e) {System.out.println("Error al leer el fichero"); } 而不是 for

之后当我想这样做时:

ficheroZonas = new FicheroZonas();

listaZonas = ficheroZonas.getListaZonas();

lZonas = new JList<>();
        
for (int i = 0; i < listaZonas.size(); i++) {
    modeloZona.add(i, listaZonas.get(i));
}

我不能这样做,因为listaZonas 为空。请帮帮我!

【问题讨论】:

    标签: java file null syntax-error ioexception


    【解决方案1】:

    为了防止NullPointerException 我强烈建议初始化listaZonas 喜欢

    List<Zona> listaZonas = Collections.emptyList();
    

    IOExceptionString[] strMedicos = zonas[2].split("[%]"); 无关。因为% 不是特殊字符split("%") 就足够了。
    如果打印了Error al leer el fichero,它也不是FileNotFoundException。 我猜你的文件是空的或被读保护的。

    【讨论】:

      猜你喜欢
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      • 2022-12-12
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 2018-12-23
      相关资源
      最近更新 更多