【发布时间】:2015-04-07 07:29:04
【问题描述】:
我正在做一个项目,其中用户可以通过互联网向第三方授予文件系统访问权限,我编写了以下代码来映射存储中的所有文件:
private List<File> getListFiles(File parentDir) {
ArrayList<File> inFiles = new ArrayList<File>();
File[] files = parentDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
inFiles.addAll(getListFiles(file));
} else {
inFiles.add(file);
}
}
return inFiles;
}
我把它当作
JSONArray jarray=new JSONArray(getListFiles(Environment.getExternalStorageDirectory()));
我面临的问题是我在 json 对象中获取了整个文件路径。但我需要的是文件和目录的有序 Json 结构(仅具有名称和子目录),不包括整个文件路径。我尝试使用模型来映射文件和目录,如下所示
public class BasiDir {
List<BasiDir> subDir;
String name;
List<FileInside> files;
/**
* @return the subDir
*/
public List<BasiDir> getSubDir() {
return subDir;
}
/**
* @param subDir the subDir to set
*/
public void setSubDir(List<BasiDir> subDir) {
this.subDir = subDir;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the files
*/
public List<FileInside> getFiles() {
return files;
}
/**
* @param files the files to set
*/
public void setFiles(List<FileInside> files) {
this.files = files;
}
}
public class FileInside {
String filepath,filename;
/**
* @return the filename
*/
public String getFilename() {
return filename;
}
/**
* @param filename the filename to set
*/
public void setFilename(String filename) {
this.filename = filename;
}
}
但是我大部分时间都很困惑在哪里使用它们,谁能指出我可以完成这项任务的正确方向,也欢迎任何第三方库的链接
编辑
我需要的格式如下: (对于一个有两个文件和一个子目录的目录)
{
"root":[
{
"filename":"a.txt"
},
{
"filename":"b.txt"
},
{
"dirA":[
{
"filename":"c.txt"
},
{
"filename":"d.txt"
}
]
}
]
}
【问题讨论】:
-
那么举个例子,说明 json 文本的外观。
标签: android json file filesystems