这是我在互联网上找到的用于读取文件行的代码,我也使用eclipse,并在其参数字段中将文件名称作为SanShin.txt传递。但它会打印出来:
Error: textfile.txt (The system cannot find the file specified)
代码:
public class Zip {
public static void main(String[] args){
try{
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream("textfile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
// Print the content on the console
System.out.println (strLine);
}
//Close the input stream
in.close();
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
}
}
请帮助我打印此错误的原因。 感谢
答案 0 :(得分:12)
...
// command line parameter
if(argv.length != 1) {
System.err.println("Invalid command line, exactly one argument required");
System.exit(1);
}
try {
FileInputStream fstream = new FileInputStream(argv[0]);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Get the object of DataInputStream
...
> java -cp ... Zip \path\to\test.file
答案 1 :(得分:1)
您的new FileInputStream("textfile.txt")
是正确的。如果它抛出该异常,则在运行程序时当前目录中没有textfile.txt
。您确定该文件的名称实际上不是testfile.txt
(请注意s
,而不是x
,位于第三位。)
偏离主题:但您之前删除的问题询问了如何逐行读取文件(我认为您不需要删除它,FWIW)。假设你仍然是一个初学者并掌握了一些东西,一个指针:你可能不想要使用FileInputStream
,这是用于二进制文件,而是使用Reader
中的java.io
个接口/类集(包括FileReader
)。此外,只要有可能,使用接口声明变量,即使在将它们初始化为特定类时也是如此,例如,Reader r = new FileReader("textfile.txt")
(而不是FileReader r = ...
)。
答案 2 :(得分:1)
当您指定"textfile.txt"
时,操作系统将查看该文件的程序工作目录。
您可以使用new FileInputStream("C:\\full\\path\\to\\file.txt")
此外,如果您想知道程序运行的目录,请尝试以下方法:
System.out.println(new File(".").getAbsolutePath())