2016-12-14 15 views
0

Androidデバイスのダウンロードフォルダに保存されたファイルからJSON文字列を取得しようとしています。今私はhereで提供されているファイルブラウザを使用して、これにちょうどいいパスを得ることができます。Android外付けストレージでファイルを開き、JSON文字列を読み取る

hereというidionを使用してファイルを開き、文字列を読み取ろうとしました。 (明らかにAndroidはJava 7を使用していないのですが、私はこの質問の回答を使用することができません、android.provider.MediaStoreのファイルクラスは唯一のものです)

いずれにしてもJSON文字列は質問のイディオムを使用しています。問題はGSONで出力を使用することができません(エラー:BEGIN_OBJECTは期待されていましたが、1行目の列1にSTRINGしていました)

ファイルから文字列関数に戻ってきたものが次のようになります。

����z������9>{ 
    "chEqEnable": [ 
    [ 
     true, 
     true, 
... etc ... 

またoccasionalyたとえば、ブール値がどのように見えるために値:

z������  true, 

代わりの

true, 

Androidと外部ストレージを扱うときにファイルを受け取り、それからJSON文字列を読んで、より自由な方法で、より良い方法がありますか?

public static String file2String(String filePath) throws IOException 
{ 

    StringBuilder stringBuilder = new StringBuilder(); 
    BufferedReader reader = new BufferedReader(new FileReader(filePath)); 
    String line = null; 

    try{ 
     while((line = reader.readLine()) != null) 
     { 
      stringBuilder.append(line); 
     } 
    } finally { 
     reader.close(); 
    } 

    String returnStr = stringBuilder.toString(); 
    return returnStr; 
} 

私は外部ストレージにファイルを書き込むとき、私はこの

public static String ExportTuning(Context context, String fileName, String json) 
    { 
     File path; 
     if(fileName.contains(".rfts")) { 
      path = GetDocumentsPath(fileName); 
     } else { 
      path = GetDocumentsPath(fileName+".rfts"); 
     } 

     try { 
      FileOutputStream fileOut = new FileOutputStream(path); 
      ObjectOutput strOut = new ObjectOutputStream(fileOut); 
      strOut.writeUTF(json); 
//   strOut.writeChars(json); // this just causes a ton of gibberish when I read the file back 
      strOut.close(); 
      fileOut.close(); 

      String[] paths = new String[]{path.getAbsolutePath()}; 
      MediaScannerConnection.scanFile(context, paths, null, null); 

      return "Save Successful"; 
     } 
     catch(java.io.IOException e) { 
      return e.getMessage(); 
     } 
    } 

答えて

1

Is there some better way when dealing with Android and external storage, to take my file and read a JSON string from it, abberation free?

を使用します。参考のため

は、ここでは他の質問からイディオムの私の実装は次のようになりますあなたの主な問題はExportTuning()メソッドにあります。あなたはJSONを書いていません。あなたはObjectOutputStreamにJavaオブジェクトを書き出しています。 JSONを作成する場合は、ObjectOutputStreamを取り除き、オブジェクトではなくテキスト(例:PrintWriter)を書き込むものを使用します。お気に入りのテキストエディタ、またはcatなどを使用してJSONファイルを調べることができます。

JSONを後で解析するにあたっては、すべての文字列読み取りコードを削除し、Readerオブジェクト(例:InputStreamReader)とpass that to fromJson()を作成します。

+0

最終的にタブレットからファイルを取得することができました(ASUSを購入しないでください!)そして、それはすべてのバイトコードのようです。私はあなたの解決策を与えるでしょう。 –

+0

うん、それは、ありがとう! –

関連する問題