public class FileUtil {
public static String getJson(Context context,String path) throws JSONException {
JSONObject jo = new JSONObject();
JSONArray files = new JSONArray();
JSONArray directory = new JSONArray();
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
JSONObject entry=new JSONObject();
entry.put("name", listOfFiles[i].getName());
entry.put("path", listOfFiles[i].getAbsolutePath());
entry.put("size", readableFileSize(listOfFiles[i].length()));
entry.put("dateModified",readabledateMod(listOfFiles[i]) );
files.put(i, entry);
} else {
JSONObject entry=new JSONObject();
entry.put("name", listOfFiles[i].getName());
entry.put("path", listOfFiles[i].getAbsolutePath());
entry.put("size", readableFileSize(listOfFiles[i].length()));
entry.put("dateModified",readabledateMod(listOfFiles[i]) );
entry.put("filesNumber", Integer.toString(listOfFiles[i].listFiles().length));
//entry.put("directorySize",readableFileSize(folderSize(listOfFiles[i])));
directory.put(i, entry);
}
}
jo.put("files", files);
jo.put("directory",directory);
return jo.toString();
}
}
输出:
{
"files":
[
null,null,
{"path":"\/sdcard\/json.txt","dateModified":"21\/09\/2014","size":"196B","name":"json.txt"},
null,null,null,
{"path":"\/sdcard\/a.txt","dateModified":"28\/09\/2014","size":"3 B","name":"a.txt"},
null,null
],
"directory":
..............................
.........................
}
我正在尝试以json格式获取文件列表。使用arraylist工作正常但是使用json它会给我一些空值... 为什么返回一些值null我怎么能修复这个我尝试entry.equals(null)但所有那些不起作用请帮助
答案 0 :(得分:2)
问题是这个
files.put(i, entry);
使用完整列表的索引作为放置条目的索引。因此,对于它找到的每个目录,您都会跳过文件列表中的一个位置。
只需使用
files.put(entry);
当然,directory.put(i, entry);