我正在使用一个扩展TransferHandler类的类来获取要放入gui中的文件的路径。现在我需要获取该路径并将其转换为一个文件对象,这样我就可以使用已经编写的opener方法打开它。我试着把路径放在一个像这样的文件对象中:
final File file = new File(filePath);
但是它不起作用,因为我在Linux中运行应用程序,所以我需要对文件路径做一些特殊的操作吗?该应用程序需要在Linux和Windows中都可以运行,有没有一种方法可以同时适用于两者?如果没有,我将如何分别为Linux和Windows做这件事?
此外,错误消息如下所示:
错误[Thread-4]09:07:45 01/07/15:无法打开java.io.FileNotFoundException:home/ur/Desktop/out.txt(没有这样的文件或目录)位于java.io.FileInputStream.open(本机方法)位于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)
-
检查文件是否已存在于此路径
filePath
-
/home/ur/Desktop/out.txt
应该类似于Linux中的路径,如果您的路径是绝对的,则从/
开始。 -
对于Java,每个平台都是一样的,您不必担心Linux/Windows(除了提供文件路径)。不过,所有方法在所有平台上都应该运行良好。
-
您可以使用
file.exists()
,它将提供布尔返回值,以便满足您的条件。CCD_ 5如果文件存在&否则为CCD_ 6。
Linux没有任何特定功能。
Java是独立于平台的语言,没有特殊情况必需。
编辑:我的错是我完全误解了它。你检查过文件权限吗?谁是文件等的所有者?
请检查以下内容:
- 检查文件访问权限
- 始终使用绝对路径(前面有"/")
- 对于主目录,请尝试使用
System.getProperty("user.home")
,如-
File userHomeDir = new File(System.getProperty("user.home"));
File fileToRead = new File(userHomeDir , "Desktop/out.txt");
- 通过
if(fileToRead.exists())
处理文件访问
以上应该能够给你一个明确的解决方案。否则,你可能会过度寻找一些东西,我不确定。
所以我觉得自己很傻。事实证明,每次导入文件时,我的文件路径末尾都只有一个空格。我曾尝试放入一个trim语句,但后来我是个愚蠢的傻瓜,没有设置filePath=file。Path.trim()。很抱歉给你们带来麻烦!