2017-10-02 4 views
0

TIZENアーキテクチャを使用してSAMSUNGディスプレイ用のWebアプリケーションを開発しています。私はファイルシステムAPIを実装しましたが、今は私が理解できない問題に悩まされており、ドキュメンタントは..まばらです。ディレクトリがFileオブジェクト(TIZENファイルシステムAPI)に解決する

現在、アプリケーションはwgt-private/data /を持つようにwgt-privateにデータフォルダを作成します。しかし、このパスを解決しようとすると、Fileオブジェクトは、Fileオブジェクトを受け取るので、FileオブジェクトはDirectoryオブジェクトと同じようにcreateFile()メソッドを提供しないため、ファイルを作成できません。

ディレクトリを作成するコード。遅延機能とコールバックが実装されていますが、これは冗長ですが、このスレッドでは無視できます。エッセンシャルは、主にファイルシステムAPIからオブジェクトを取得TIZENの解決機能、の最初の成功-コールバックです:

tizen.filesystem.resolve(
      homePath, 
      function (obj) { 
       var exceptionThrown = false; 
       try { 
        var newDir = obj.createDirectory(path); 
       } catch (e){ 
        Logger.debug("[DIRECTORY] Could not create directory:"); 
        Logger.debug(e.message); 
        Logger.debug(e); 
        exceptionThrown = true; 
       } 

       // check if an exception occurred 
       if (exceptionThrown == true) { 
        dfd.resolve(); 
        if (failure_cb != null && typeof(failure_cb) === 'function'){ 
         failure_cb(path); 
        } 
       } else { 
        dfd.resolve(); 
        if (success_cb != null && typeof(success_cb) === 'function'){ 
         self.exists(path, success_cb, failure_cb) 
        } 
       } 
      }, 
      function (e) { 
       Logger.debug("[DIRECTORY] Attempted to create directory, but could not resolve location due to error:"); 
       dfd.resolve(); 
       Logger.debug(e); 
       if (failure_cb != null && typeof(failure_cb) === 'function'){ 
        failure_cb(path); 
       } 
      } 
    ); 

これは、Directoryオブジェクトを取得してのCreateFileを呼び出すことによって、ファイルを作成するための呼び出しです。ここでも、無視できる遅延の解決とコールバックがあります。

tizen.filesystem.resolve(
      'wgt-private/data', 
      function (obj) { 
       try { 
        Logger.debug(obj); 
        obj.createFile(filename); // create file at location 
       } catch (e) { 
        Logger.debug("[FILE] Exception caught while attempting to create file " + path); 
        Logger.debug(e.message); 
        Logger.debug(e); 
       } 
       self.exists(path, success_cb, failure_cb); // if exists --> success 
      }, 
      function (err) { 
       Logger.error("[FILE] Could not create file!"); 
       Logger.error(err); 

       // couldn't create file - failure-callback 
       if (failure_cb != null && typeof(failure_cb) === 'function'){ 
        failure_cb(path); 
       } 
      }, 
      "rw" 
     ); 
:エッセンシャルはWGT-プライベート/データを解決することは私にDirectoryオブジェクトを与えるべきであるということですが、代わりに、私はFileオブジェクトを受け取る(私は、具体的な成功コールバックが/データを作成するために呼ばれ、それがcreateDirectoryを使用して作成されていることを確認しました)

私はこの動作を理解していません。私はちょうどこの同じ方法でちょうどwgt-privateを解決できますが、サブパスを解決すると私はファイルを解決しています。誰かが私が間違っていることを見ていますか?

+0

、 obj.createDirectory() は、ファイルを作成します。これらは、Directoryオブジェクトの obj.listFiles() を呼び出すときにもリストされます。これはどのように可能ですか? – KVNSTOBJEKT

+0

だから私はこれをコンソールを使って手作業でもう一度テストし、手動でディレクトリを作成しました。このディレクトリはlistFilesにもリストされていますが、私には分かりません。 – KVNSTOBJEKT

+0

ドキュメントで言うように、listFilesはFileオブジェクト(明らかにディレクトリもTIZEN内にあります)を返します。しかし、これは変更されていませんが、TIZENはファイルであると私が判断したディレクトリを考慮しています。 IOError:このメソッドを呼び出すファイルオブジェクトはディレクトリではありません – KVNSTOBJEKT

答えて

0

tizen.filesystem.resolve()関数を使用して場所を解決するときは、 は、Tizen FileSystemから場所を解決しています。

'wgt-private'は実際のパスではなく、仮想パスを表します。たとえば、 'file://opt/usr/abcd.yourapp'のようにします。 'wgt-private'パラメータをtizen.filesystem.resolve()に渡すと、ウィジェットが情報を格納するプライベートフォルダが解決されます。

Tizenファイルシステムからプライベートフォルダを解決したら、データフォルダのプライベートフォルダを解決する必要があります。

tizen.filesystem.resolve('wgt-private', function(obj) 
{ 
    file = obj.resolve('data'); 
}, function(e) 
{ 
    console.log("Error" + e.message); 
}, "rw"); 

参考:基本的にresolve()

+0

ねえ、プライベートは仮想ルートで、実際のパスはURIです。問題は、私はwgt-privateを解決してisFile = trueのFileオブジェクトを与えられたという印象を受けましたが、解決されたパスが本当に間違っていたストリーミングメソッドで同時に別の呼び出しが発生しました。結論として、私が投稿した内容はうまくいきました。エラーはコードのどこかにありました。ケースが閉まった。 – KVNSTOBJEKT

関連する問題