我使用扩展TransferHandler类的类来获取文件被丢弃到gui的路径。现在我需要采用该路径并将其转换为文件对象,以便我可以使用已经编写的opener方法打开它。我尝试将路径放在文件对象中,如下所示:
final File file = new File(filePath);
它不起作用,我是否需要对文件路径做一些特殊的事情,因为我在Linux中运行应用程序?该应用程序需要在Linux和Windows中都可运行,是否有适用于这两种方法的方法?如果不是,我将如何分别为Linux和Windows做这件事?
此外,错误消息如下所示:
ERROR [Thread-4] 09:07:45 01/07/15:未能打开 java.io.FileNotFoundException:home / ur / Desktop / out.txt (没有相应的文件和目录) at java.io.FileInputStream.open(Native Method) 在java.io.FileInputStream。(FileInputStream.java:140) 在java.io.FileReader。(FileReader.java:72) 在com.ur.log.reader.FileSelectionBinder.openFile(FileSelectionBinder.java:208) 在com.ur.log.reader.FileSelectionBinder.loadFile(FileSelectionBinder.java:189) 在com.ur.log.reader.FileSelectionBinder $ DragAndDropDataTransfer $ 1.run(FileSelectionBinder.java:125)
答案 0 :(得分:0)
Linux没有特定的内容。
Java是平台无关的语言,没有特殊情况 必需的。
编辑:我的错误,我完全误解了它。你检查过文件权限了吗?谁是文件的所有者等?
请执行/检查以下内容:
System.getProperty("user.home")
File userHomeDir = new File(System.getProperty("user.home"));
File fileToRead = new File(userHomeDir , "Desktop/out.txt");
以上应该可以给你一个明确的解决方案。否则,你可能会看到一些东西,我不确定。
答案 1 :(得分:0)
检查此路径filePath
/home/ur/Desktop/out.txt
应该类似于Linux中的路径,如果您的路径是绝对路径,则从/
开始。
对于Java,每个平台都是一样的,您不必担心Linux / Windows(除了提供文件路径)。所有方法都可以在所有平台上正常工作。
您可以使用file.exists()
来提供布尔返回值以满足您的条件。 true
如果文件存在&否则false
。
答案 2 :(得分:0)
所以我觉得很傻。事实证明,每次导入文件时,我的文件路径末尾只有一个空格。我曾尝试过一个修饰语句,但后来我是一个愚蠢的头,并没有设置filePath = file.Path.trim()。对不起麻烦的家伙们!