从可以在 Linux 中打开的文件路径创建文件

Creating a file from a file path that can be opened in Linux

我正在使用扩展 TransferHandler class 的 class 来获取放入 gui 的文件的路径。现在我需要采用该路径并将其转换为一个文件对象,以便我可以使用已经编写的 opener 方法打开它。我试着把路径放在这样的文件对象中:

final File file = new File(filePath);

虽然它不起作用,我是否需要对文件路径做一些特殊的事情,因为我是 运行 Linux 中的应用程序?该应用程序需要在 Linux 和 Windows 中都可以运行,是否有一种方法适用于这两种情况?如果不是,我该如何分别为 Linux 和 Windows 做呢?

错误消息也如下所示:

ERROR [Thread-4] 09:07:45 01/07/15: failed to open java.io.FileNotFoundException: home/ur/Desktop/out.txt (No such file or directory) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.(FileInputStream.java:140) at java.io.FileReader.(FileReader.java:72) at com.ur.log.reader.FileSelectionBinder.openFile(FileSelectionBinder.java:208) at com.ur.log.reader.FileSelectionBinder.loadFile(FileSelectionBinder.java:189) at com.ur.log.reader.FileSelectionBinder$DragAndDropDataTransfer.run(FileSelectionBinder.java:125)

没有什么特定于 Linux。

Java is platform independent language and no special case is required.

编辑: 糟糕的是我完全误解了它。你检查文件权限了吗?谁是文件的所有者等?

请do/check以下内容:

  1. 检查文件访问权限
  2. 始终使用绝对路径(前面带有“/”)
  3. 对于主目录,尝试使用 System.getProperty("user.home") 比如 -

.

File userHomeDir = new File(System.getProperty("user.home")); 

File fileToRead = new File(userHomeDir , "Desktop/out.txt");
  1. 通过if(fileToRead.exists())
  2. 处理文件访问

以上应该可以给你一个确定的解决方案。否则,您可能看错了一些东西,我不确定。

  1. 检查文件已经存在于此路径filePath

  2. /home/ur/Desktop/out.txt 应该类似于 Linux 中的路径,以 / 开头,以防您的路径是绝对路径。

  3. 对于Java,每个平台都一样,不用担心Linux/Windows(给文件路径除外)。不过,所有方法都应该在所有平台上都能正常工作。

  4. 您可以使用 file.exists() 来提供布尔值 return 以获得您的条件。 true 如果文件存在 & false 否则。

所以我觉得很傻。结果每次我导入它时,我的文件路径末尾只有一个 space 。我曾尝试放入一个 trim 语句,但后来我是个愚蠢的笨蛋,没有设置 filePath = file.Path.trim()。抱歉给大家添麻烦了!