2016-09-01 22 views
0

私の問題は、getAbsolutePathが見つけようとしているファイルの周りの特定のフォルダを無視していることです。私がやろうとしているのは、そのファイルの名前だけを使ってファイルパスを取得することです。getAbsolutePath特定のフォルダを無視する

import java.awt.Desktop; 
import java.io.File; 
import java.io.IOException; 

public class OpenFile { 
    public static void main(String[] args) throws IOException{ 
     File file = new File("Point.java"); 
     String path = file.getCanonicalPath(); 

     try { 
      Desktop.getDesktop().open(new File(path)); 
     } catch(IOException e) { 
      System.out.println("not work"); 
     } 
    } 
} 

私はこのエラーを取得しています:

Exception in thread "main" java.lang.IllegalArgumentException: The file: /Users/default/Desktop/Eclipse/TreeThing/Point.java doesn't exist. 
at java.awt.Desktop.checkFileValidation(Desktop.java:210) 
at java.awt.Desktop.open(Desktop.java:270) 
at ForkBomb.main(ForkBomb.java:11) 

実際のファイルパスが/Users/default/Desktop/Eclipse/TreeThing/src/Point.javaですが、ディレクトリのsrcが無視されているため、プログラムが実行されませんここで私が使用しているコードです。どうすれば解決できますか?

+2

'TreeThing'ではなく' TreeThing/src'です。 –

+0

私は自分自身でファイルパスをトレースしました。これは、TreeThingの内側にあるsrcというフォルダ内にあります。 –

+2

[getCanonicalPath() '](https://docs.oracle.com/javase/8/docs/api/java/io/File.html#getCanonicalPath--)のjavadocをもう一度読んでください(または最初に?)実際に*それが何を参照してください。ヒント:ファイル*検索*メソッドではありません。 – Andreas

答えて

1

コードは/ Users/default/Desktop/Eclipse/TreeThingディレクトリから実行されているようです。これは、アプリケーションの現在の作業ディレクトリを設定します。

したがって、パスなしでFileオブジェクトをインスタンス化すると、コードは現在の作業ディレクトリにあるとみなします。

を検索してください。既存Point.javaを参照したい場合は

、のいずれかを使用:

File file = new File("src/Point.java"); 

...または:それは明らかである現在の作業ディレクトリへの相対開かれています

File file = new File("/Users/default/Desktop/Eclipse/TreeThing/src/Point.java"); 
関連する問題