2016-05-21 10 views
-1

ファイルからJSONを読み取ろうとするたびに、エラーが発生します。 私はそれをやろうとした場合:ファイルCからのJSONの読み取りUWP

JObject o1 = JObject.Parse(File.ReadAllText(@"c:\DB.json")); 

またはそれを:

using (StreamReader file = File.OpenText(@"c:\db.json")) 
      using(JsonTextReader reader = new JsonTextReader(file)) 
      { 
       JObject o2 = (JObject)JToken.ReadFrom(reader); 
      } 

私は{ "ファイル ':\ DB.json C' が見つかりませんでした。これらのエラー

を取得します。 ":" c:\ DB.json "}

DB.jsonをF:ディレクトリにコピーすると、エラー:

{ "パスの一部が見つかりませんでした。 'F:\ DB.json' を"}

私の問題は何

+1

ファイルをbinフォルダに入れて、ファイル名をSRに付けるとどうなりますか? – Leron

+0

働いています、ありがとう! –

+0

ここで解決策を見つける[UWP JSON](http://stackoverflow.com/questions/20993849/filenotfoundexception-reading-json-file-from-assets-folder-in-windows-store-app) – Uwpbeginner

答えて

0

JSONからファイルを読み込もうとしているときは、次のようにします。

最初にダウンロードNuGetからNewtonSoft.Jsonパッケージ。

次のコードを使用できます。 (あなたが非直列化するオブジェクトへの変更文字列)

private static string JsonFile = "myFile.dat"; //your file name 

public static async Task<List<string>> LoadFromJsonAsync() 
    { 
     string JsonString = await DeserializeFileAsync(JsonFile); 
     if (JsonString != null) 
      return (List<string>)JsonConvert.DeserializeObject(JsonString, typeof(List<string>)); 
     return null; 
    } 

private static async Task<string> DeserializeFileAsync(string fileName) 
    { 
     try 
     { 
      StorageFile localFile = await ApplicationData.Current.LocalFolder.GetFileAsync(fileName); 
      return await FileIO.ReadTextAsync(localFile); 
     } 
     catch (FileNotFoundException) 
     { 
      return null; 
     } 
    } 
2

我々はUWPアプリでFile.ReadAllText methodまたはFile.OpenText methodを使用できますが、UWPでpathパラメータにはいくつかの制限がありますが。ここではすべてのパスを使用できるわけではありません。

デフォルトでは、アプリケーションは特定のファイルシステムの場所にアクセスできます。アプリケーションは、ファイルピッカーを使用して追加の場所にアクセスしたり、機能を宣言したりすることもできます。

詳細については、File access permissionsを参照してください。

"c:\ DB.json"や "f:\ DB.json"のようなファイルパスの場合、デフォルトでUWPでアクセスすることはできません。 FileOpenPickerを使用して最初にアクセス権を取得し、そのアイテムをあなたのアプリのFutureAccessListに追加すると、あなたのアプリが将来そのアイテムに簡単にアクセスできるようになります。

さらに、UWPアプリでファイルを読むには、Create, write, and read a fileを参照することができます。

すべてのアプリケーションがデフォルトでアプリケーションインストールディレクトリとアプリケーションデータの場所にアクセスできるため、これらの2つの場所にjsonファイルを置く/保存することをお勧めします。アプリケーションに付属のファイルで、変更する必要がない場合は、アプリケーションをアプリケーションインストールディレクトリに置くことができます。これを行うには、プロジェクトにファイルを追加し、ビルドアクションコンテンツと設定します。ただし、インストールディレクトリ内のファイルは読み取り専用です。後でファイルを変更する必要がある場合は、ApplicationData.LocalFolderなどのアプリケーションデータの場所に保存できます。

関連する問題