2015-07-01 41 views
1

我正在使用擴展TransferHandler類的類來獲取文件被放入gui的路徑。現在我需要走這條路,把它變成一個文件對象,所以我可以用已經寫好的opener方法打開它。我嘗試了把路徑的文件對象內部是這樣的:從可以在Linux中打開的文件路徑創建文件

final File file = new File(filePath); 

它不工作,雖然,我需要做一些特殊的文件路徑,因爲我跑在Linux應用程序?該應用程序需要在Linux和Windows上運行,是否有一種方法可以同時適用於兩者?如果不是,我將如何分別爲Linux和Windows做到這一點?

而且該錯誤信息是這樣的:

錯誤[線程4] 9點07分45秒15年1月7日:未能打開 java.io.FileNotFoundException:家用/ UR /桌面/out.txt (沒有這樣的文件或目錄) 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.ja VA:189) 在com.ur.log.reader.FileSelectionBinder $ DragAndDropDataTransfer $ 1.run(FileSelectionBinder.java:125)

+0

你從哪裏運行它?你在'家'前面用斜線試過了嗎? –

+0

它不應該更像'/ home/ur/Desktop/out.txt'嗎?否則你試圖找到相對於你的執行環境的文件 – MadProgrammer

+0

將filePath更改爲/home/ur/Desktop/out.txt – codeaholicguy

回答

0
  1. 檢查文件已經存在,在此路徑filePath

  2. /home/ur/Desktop/out.txt應該像Linux中的路徑,在案件開始/您的路徑是絕對的。

  3. 對於Java而言,每個平臺都是一樣的,您不必擔心Linux/Windows(除了給出文件路徑)。儘管所有平臺上的所有方法都應該正常工作。

  4. 你可以利用file.exists()這將提供布爾返回值,以便有你的條件。 true if file exists & false otherwise。

+0

我剛剛在Linux命令終端中使用了cat函數,它和我試圖在我的程序中使用的文件路徑完全相同,並且它打開了,但我甚至無法讓我的程序說它存在... –

+0

關於您提供的例外情況,我只能說您的文件不存在。否則你也可以檢查權限。嘗試提供完整的代碼,然後我可以深入瞭解它。 –

0

沒有什麼具體到Linux。

Java是平臺無關語言,沒有特殊情況是需要 。

編輯:我不好意思,我完全誤解了它。你有沒有檢查文件權限?誰是文件的所有者?

請勿/檢查以下內容:

  1. 檢查文件訪問權限
  2. 總是使用絕對路徑(以「/」在前面)
  3. 對於主目錄,請嘗試使用System.getProperty("user.home")喜歡 -

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

File fileToRead = new File(userHomeDir , "Desktop/out.txt"); 
  • 手柄經由if(fileToRead.exists())
  • 文件訪問上述應該能夠給你一個明確的解決方案。否則,你可能會過去看一些東西,我不確定。

    +0

    我沒有試圖創建一個新文件,該文件已經在我的桌面上了,我只是想使用文件路徑 –

    +0

    「-rw-rw-r-- 1你的朋友6月29日03:50 out.txt訪問它「和」-rw-rw-r-- 1你的朋友7月1日10:21 check.txt「。我是這個合作伙伴的唯一用戶,應該是這兩個文件的所有者,我可以通過我的代碼中的不同方法訪問它們,所以我不認爲訪問限制是問題。 –

    +0

    因爲,你提到你可以從另一種方法打開文件,我不確定真正的問題。我已經更新了上述答案中的一些更改。請檢查。 –

    0

    所以我覺得很傻。每當我導入文件路徑時,結果只有一個空格。我曾嘗試過修改聲明,但後來我是一個愚蠢的愚蠢的頭,並沒有設置filePath = file.Path.trim()。對不起,麻煩傢伙!

    相關問題