构造函数的第一行我使用的是CSVReader类,需要一个本地文件作为输入。但现在,我需要能够读取本地文件以及文件有一个URL路径(如http://example.com/example.txt)。要做到这一点,我想获得从CSVReader一类标识文件是否是本地或URL,然后使用超()在构造函数中的第一行传递的InputStream父。这样做的优雅方式是什么?办法当超级不能在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
}
}
请不要将您的类与同名的类叫做i在JDK中。你会导致某人非常困惑,很可能是你自己。 – EJP 2012-03-13 01:44:02