Estoy tratando de usar un poco de código que encontré en la parte inferior de this page. Aquí está el código en una clase que he creado para ella:Java Try y Catch IOException Problema
import java.io.LineNumberReader;
import java.io.FileReader;
import java.io.IOException;
public class LineCounter {
public static int countLines(String filename) throws IOException {
LineNumberReader reader = new LineNumberReader(new FileReader(filename));
int cnt = 0;
String lineRead = "";
while ((lineRead = reader.readLine()) != null) {}
cnt = reader.getLineNumber();
reader.close();
return cnt;
}
}
Mi objetivo es contar las líneas de un archivo de texto, guardar ese número como un entero, a continuación, utilizar ese entero en mi clase principal. En mi clase principal probé algunas formas diferentes de hacer que esto sucediera, pero (como programador nuevo) me falta algo. Esta es la primera cosa que probé:
String sFileName = "MyTextFile.txt";
private int lineCount = LineCounter.countLines(sFileName);
Con este intento me sale el error "java.io.IOException excepción no declarada; deben ser capturados o declarada a ser lanzado." No entiendo por qué estoy recibiendo esto porque, como puedo ver, la excepción se declara en mi método "countLines". Traté de usar un bloque catch try justo debajo del último código que publiqué, pero tampoco funcionó (aunque creo que no lo hice bien). Aquí está mi intento de captura de captura:
String sFileName = "MyTextFile.txt";
private int lineCount;{
try{
LineCounter.countLines(sFileName);
}
catch(IOException ex){
System.out.println (ex.toString());
System.out.println("Could not find file " + sFileName);
}
}
Por favor, muéstrame el camino! ¡Gracias de antemano por tu ayuda!
La respuesta es técnicamente correcta (el OP simplemente olvidó asignar el valor a la referencia), pero ese no era un bloque de inicializador ** estático **. Es solo un bloque de inicialización :) – BalusC
¡Tu primer código funciona perfecto! Estaba tan cerca :) Tu segundo código también funciona, pero NetBeans me dice que el ciclo while está vacío. El programa aún se compila y funciona bien, entonces supongo que eso es aceptable. – ubiquibacon
Simplemente está ignorando el contenido.En realidad, solo está interesado en la cantidad de líneas. Alternativamente, también puede usar 'BufferedReader' en combinación con' int count', que se incrementa dentro del ciclo. – BalusC