public void readItemData()
{
try {
Frame frame = null;
FileDialog fileBox = new FileDialog(frame ,"Open", FileDialog.LOAD);
fileBox.setVisible(true);
String filename = fileBox.getFile();
System.out.println(filename);
File inFile = new File("filename");
System.out.println(inFile.getAbsolutePath());
Scanner fileScanner = new Scanner(inFile);
while ( fileScanner.hasNext() )
{
String line = fileScanner.next();
System.out.println(line);
}
}
catch (FileNotFoundException ex)
{
System.out.println("Error.");
}
}
上面的代码应该获取文件对话框给出的文件,然后将其传递给读取整个文件的扫描器。获取文件的系统正在工作,但是当传递给扫描仪时,它总是给出文件未找到的异常。我不知道如何将其正确传递给扫描仪并简单地逐行读取。
我尝试使用引号而不是引号,删除try-catch等。我觉得这是一个简单的问题,但我无法弄清楚。在某些情况下,我让它打印文件的名称,但我认为那是当我在引号中传递它时,它读起来就像是一个字符串。
FileDialog.getFile()
方法仅提供文件名。您还需要调用 getDirectory()
来获取文件的目录。您可能正在尝试从与用户选择的目录不同的目录中获取文件。
与其调用
getDirectory()
和getFile()
并将它们放在一起,不如调用getFiles()
会更容易。这会返回一个 File
数组 - 它是一个数组,因为用户可能选择了多个文件。如果用户按下“取消”,将返回一个空数组。
所以你可以这样做:
File[] files = fileBox.getFiles();
if (files.length == 1) {
File inFile = files[0];
try (Scanner fileScanner = new Scanner(inFile)) {
... rest of your code...
}