尝试将用户给定的文件传递给新的扫描仪对象时找不到文件

问题描述 投票:0回答:1
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等。我觉得这是一个简单的问题,但我无法弄清楚。在某些情况下,我让它打印文件的名称,但我认为那是当我在引号中传递它时,它读起来就像是一个字符串。

java java.util.scanner bluej
1个回答
0
投票

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...
            }
© www.soinside.com 2019 - 2024. All rights reserved.