Estoy usando una clase CSVReader que toma un archivo local como entrada. Pero ahora, necesito poder leer los archivos locales y los que tienen una ruta URL (como http://example.com/example.txt). Para hacer esto, quiero derivar una clase de CSVReader que identifica si el archivo es local o URL, y luego pasar el InputStream al padre usando super() en la primera línea del constructor. ¿Cuál es la manera elegante de hacer esto?Solución cuando super no puede ser la primera línea del constructor en java
public class FileReader extends CsvReader{
public FileReader(){
if (fileName != null) {
if (fileName.trim().startsWith("http:")) {
// it is URL
URL url = new URL(fileName);
inputStream = new BufferedReader(new InputStreamReader(
url.openStream(), charset),
StaticSettings.MAX_FILE_BUFFER_SIZE);
}else{
//it is a local file
inputStream = new BufferedReader(new InputStreamReader(
new FileInputStream(fileName), charset),
StaticSettings.MAX_FILE_BUFFER_SIZE);
}
}
//Now pass the input stream to CsvReader
super(inputStream, delimiter, charset); //error - super has to be first line of constructor
}
}
Por favor, no llame a sus clases con los mismos nombres que las clases conocidas i n el JDK. Vas a causar una gran confusión a alguien, muy posiblemente a ti mismo. – EJP