从可以在 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以下内容:
- 检查文件访问权限
- 始终使用绝对路径(前面带有“/”)
- 对于主目录,尝试使用
System.getProperty("user.home")
比如 -
.
File userHomeDir = new File(System.getProperty("user.home"));
File fileToRead = new File(userHomeDir , "Desktop/out.txt");
- 通过
if(fileToRead.exists())
处理文件访问
以上应该可以给你一个确定的解决方案。否则,您可能看错了一些东西,我不确定。
检查文件已经存在于此路径filePath
/home/ur/Desktop/out.txt
应该类似于 Linux 中的路径,以 /
开头,以防您的路径是绝对路径。
对于Java,每个平台都一样,不用担心Linux/Windows(给文件路径除外)。不过,所有方法都应该在所有平台上都能正常工作。
您可以使用 file.exists()
来提供布尔值 return 以获得您的条件。 true
如果文件存在 & false
否则。
所以我觉得很傻。结果每次我导入它时,我的文件路径末尾只有一个 space 。我曾尝试放入一个 trim 语句,但后来我是个愚蠢的笨蛋,没有设置 filePath = file.Path.trim()。抱歉给大家添麻烦了!
我正在使用扩展 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以下内容:
- 检查文件访问权限
- 始终使用绝对路径(前面带有“/”)
- 对于主目录,尝试使用
System.getProperty("user.home")
比如 -
.
File userHomeDir = new File(System.getProperty("user.home"));
File fileToRead = new File(userHomeDir , "Desktop/out.txt");
- 通过
if(fileToRead.exists())
处理文件访问
以上应该可以给你一个确定的解决方案。否则,您可能看错了一些东西,我不确定。
检查文件已经存在于此路径
filePath
/home/ur/Desktop/out.txt
应该类似于 Linux 中的路径,以/
开头,以防您的路径是绝对路径。对于Java,每个平台都一样,不用担心Linux/Windows(给文件路径除外)。不过,所有方法都应该在所有平台上都能正常工作。
您可以使用
file.exists()
来提供布尔值 return 以获得您的条件。true
如果文件存在 &false
否则。
所以我觉得很傻。结果每次我导入它时,我的文件路径末尾只有一个 space 。我曾尝试放入一个 trim 语句,但后来我是个愚蠢的笨蛋,没有设置 filePath = file.Path.trim()。抱歉给大家添麻烦了!