我一直在尝试将我的C ++代码转换为Java,特别是在文件输入方面遇到困难。
String inputfilename = args[0];
Scanner infile = new Scanner (new FileInputStream(inputfilename));
这一直给我一个java.io.FileNotFoundException错误。我试图在“StackData.txt”中传递的文件正确放入命令行参数中。我已将它放在根目录和项目\ src \文件夹中,并且都不适合我。我试图命名输入文件名字符串,并且喜欢 -
String inputfilename = "StackData.txt";
Scanner infile = new Scanner (new FileInputStream(inputfilename));
这似乎也不起作用。也没有尝试将目录路径抛出到字符串名称中。我在某个地方犯了一个非常少年的错误吗?
我尝试过使用
File infile = new File(args[0]);
但是如果我尝试为while循环使用方法
while (infile.hasNextInt()){ blah blah
}
它说该方法无法解析,我认为这意味着使用hasNextInt()方法我必须用FileInputStream启动文件。
答案 0 :(得分:1)
每个java jvm都有一个工作路径。通常它与jvm的起始位置相同。但你总能改变这一点。
您的IDE具有默认工作路径集。根据您的IDE,可以在启动选项中更改。
要查找当前的工作路径,您只需打印当前目录的绝对路径:
public static void main(String[] args) {
System.out.println(new File(".").getAbsolutePath());
}
如果使用相对路径,则应将文件放在此文件夹中。
如何使用绝对路径不应抛出任何FNF异常。
要使用扫描仪,您可以使用此示例:
try {
Scanner s = new Scanner(new FileInputStream("text.xml"));
while (s.hasNextInt()){
// bla bla
}
} catch (FileNotFoundException e) {
// Please handle this exception ;)
e.printStackTrace();
}
请注意,您尝试在没有此类方法的hasNextInt()
对象上调用File
。您必须在Scanner
对象上调用它。
答案 1 :(得分:1)
文件中的简单代码相应地使用
BufferedReader br = null;
try {
String sCurrentLine;
br = new BufferedReader(new FileReader("C:\\testing.txt"));
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
}