1
ローカルディレクトリリストをJsonとして取得するにはどうすればよいですか?Jsonとしてのファイル構造リスト
だから私は、フォルダを提供する場合、私はすべてのサブフォルダとファイルをjsonツリータイプのオブジェクトに表示したいと思う。
注:私はファイルパスの一覧だけを望んでいません。
ありがとうございます!
ローカルディレクトリリストをJsonとして取得するにはどうすればよいですか?Jsonとしてのファイル構造リスト
だから私は、フォルダを提供する場合、私はすべてのサブフォルダとファイルをjsonツリータイプのオブジェクトに表示したいと思う。
注:私はファイルパスの一覧だけを望んでいません。
ありがとうございます!
@CommonsWareは正しい方向に私を入れてくれました。 I/O
/**
* Creates a json of all files and directories within the given file
* @param file the root directory to list
* @return true if success, else false
*/
public static boolean getStructure(Context context, File file) {
boolean result = false;
JsonWriter writer;
try {
writer = new JsonWriter(new FileWriter(new File(context.getApplicationContext().getExternalFilesDir(null), "FileStructure.json")));
writer.setIndent(" ");
} catch (Exception e) {
Log.e(TAG, e.toString());
return result;
}
try {
if(file.exists()) {
result = writeRootDir(writer, file);
} else {
result = false;
}
writer.close();
} catch (Exception e) {
Log.e(TAG, e.toString());
return result;
}
return true;
}
/**
* writing root directory array and object
* @param writer the JsonWriter
* @param dir the root dir
* @return true if success, else false
*/
private static boolean writeRootDir(JsonWriter writer, File dir) {
boolean result = false;
if(!dir.exists() || !dir.isDirectory()) {
return result;
}
try {
writer.beginArray();
writer.beginObject();
writer.name(dir.getPath());
result = writeDirectory(writer, dir);
writer.endObject();
writer.endArray();
} catch (Exception e) {
Log.e(TAG, e.toString());
return result;
}
return result;
}
/**
* for each directory and file within the root directory
* @param writer the JsonWriter
* @param dir sub-directory
* @return true if success, else false
*/
private static boolean writeDirectory(JsonWriter writer, File dir) {
if(!dir.exists() || !dir.isDirectory()) {
return false;
}
File[] allFiles = dir.listFiles();
List<File> directories = new ArrayList<>();
List<File> files = new ArrayList<>();
for (File subFile : allFiles) {
if(!subFile.getName().startsWith(".") && !subFile.getName().startsWith("_") && subFile.isDirectory()) {
directories.add(subFile);
}
}
for(File subFile : allFiles) {
if(!subFile.getName().startsWith(".") && !subFile.getName().startsWith("_") && !subFile.isDirectory()) {
files.add(subFile);
}
}
Collections.sort(directories);
Collections.sort(files);
try {
writer.beginArray();
writer.beginObject();
if(directories.size() > 0) {
for(File file : directories) {
writer.name(file.getName());
writeDirectory(writer, file);
}
}
writer.endObject();
if(files.size() > 0) {
for(File file : files) {
writer.value(file.getName());
}
}
writer.endArray();
} catch (Exception e) {
Log.e(TAG, e.toString());
return false;
}
return true;
}
いい働きの例、私は多くを助けた。ありがとう –
使用するJavaファイルはディレクトリツリーをトラバースし、あなたのJSONを構築するためにそれを使用する:
これは、ここで方法です
ExternalStorageDirectory (/sdcard)
で
FileStructure.json
ファイルを作成します。 ['JsonWriter'](http://developer.android.com/reference/android/util/JsonWriter.html)は、JSONを生成するための合理的な選択肢になります。 – CommonsWare@CommonsWare - 答えとしてこれを追加する必要があります。あなたが他の人が投票した場合、あなたは信用を得るでしょう:) –
ちょうど確認するには、[この]のようなものが欲しいです(http://stackoverflow.com/questions/11194287/convert-a-directory-structure-in-the-filesystem-to- json-with-node-js)でも、Java/Androidでは? – ishmaelMakitla