2016-04-10 6 views
1

処理3-0-1(まだ更新されていません)を使用して、dataPath()関数に問題があります。処理中にスケッチのパスを取得する方法は? (データパスが機能していない)

マイコード:

final String path = dataPath(""); 
//... 
void setup(){ 
    //... 
    println(path); 
    //... 
} 

これは、コンソールに表示されます。

/メディア/ Ubuntuの/拡張ドライブ/プログラム書き込み/ Javaの/加工/ Ubuntuの/処理-3.0.1 /ヌルを/

:データ

それが表示されるはずです(ドキュメントや他のプロジェクトで私の試みに応じて)

/メディア/ Ubuntuの/拡張ドライブ/プログラム書き込み/ Javaの/加工/ Projets/Time_Fighter /データ

だから、それは代わりに私のプロジェクトへのパスのパス処理を返すだと思われますか?プラス、なぜ「ヌル」ですか?

質問は、私のスケッチのパスを持つ方法を知っていますか?

PS。

File file = new File("data"); 
//... 
void setup(){ 
    //... 
    file.getAbsolutePath(); 
    //... 
} 

返さ:

/メディア/ Ubuntuの/拡張ドライブ/プログラム書き込み/ Javaの/加工/ Ubuntuの は私の友人ではなく、Fileクラスを使用することが提案されている、私はこの結果を持っていました/処理-3.0.1 /データ

PPS。 私はUbuntu(Mate)を使用しています...

答えて

0

dataPath()機能を使用しないでください。 sketchPath()機能を使用する必要があります。 the Processing source for dataPath()から

/** 
    * Prepend the sketch folder path to the filename (or path) that is 
    * passed in. External libraries should use this function to save to 
    * the sketch folder. 
    * <p/> 
    * Note that when running as an applet inside a web browser, 
    * the sketchPath will be set to null, because security restrictions 
    * prevent applets from accessing that information. 
    * <p/> 
    * This will also cause an error if the sketch is not inited properly, 
    * meaning that init() was never called on the PApplet when hosted 
    * my some other main() or by other code. For proper use of init(), 
    * see the examples in the main description text for PApplet. 
    */ 
    public String sketchPath(String where) { 
    if (sketchPath() == null) { 
     return where; 
    } 
    // isAbsolute() could throw an access exception, but so will writing 
    // to the local disk using the sketch path, so this is safe here. 
    // for 0120, added a try/catch anyways. 
    try { 
     if (new File(where).isAbsolute()) return where; 
    } catch (Exception e) { } 

    return sketchPath() + File.separator + where; 
    } 

/** 
    * <b>This function almost certainly does not do the thing you want it to.</b> 
    * The data path is handled differently on each platform, and should not be 
    * considered a location to write files. It should also not be assumed that 
    * this location can be read from or listed. This function is used internally 
    * as a possible location for reading files. It's still "public" as a 
    * holdover from earlier code. 
    * <p> 
    * Libraries should use createInput() to get an InputStream or createOutput() 
    * to get an OutputStream. sketchPath() can be used to get a location 
    * relative to the sketch. Again, <b>do not</b> use this to get relative 
    * locations of files. You'll be disappointed when your app runs on different 
    * platforms. 
    */ 
    public String dataPath(String where) { 
    return dataFile(where).getAbsolutePath(); 
    } 

そして、ここではsketchPath()です

関連する問題