我有点问题。 我得到了一张名为“保存”的地图(在Android手机上),在该文件夹中我收到了几个.txt文件。
我知道如何输入文件夹,我可以阅读1个txt文件(硬编码),但我希望它是动态的。
我想要这样的话:
public void onClick(View v) {
File root = Environment.getExternalStorageDirectory();
save = root.toString()+"/Save/";
if (save.startsWith("3_test")){
System.out.println("FOUND!");
} else {
System.out.println("NOT FOUND!");
}
}
我有一个名为3_test.txt的txt文件,但他无法通过这种方式找到它,如果我用硬编码就可以找到它。
问题是我不知道如何“扫描”文件夹保存中的所有文件,然后对其进行“if”检查。
希望有人能帮助我。
答案 0 :(得分:1)
我认为您的代码在Java中也不起作用:您的save
变量包含de root
文件夹下文件夹Save的路径。
要实现筛选的目录列表,您可以尝试使用File对象上的list()方法来保存Save文件夹,传递自定义java.io.FilenameFilter
实现,这样它将扫描目标文件夹的整个内容,并仅返回与您的约束匹配的文件的名称:
public void onClick(View v) {
File root = Environment.getExternalStorageDirectory();
File saveFolder= new File(root, "Save");
String[] files=saveFolder.list(
new FilenameFilter() {
public boolean accept(File dir, String name) {
//define here you filter condition for every single file
return name.startsWith("3_test");
}
});
if(files.length>0) {
System.out.println("FOUND!");
} else {
System.out.println("NOT FOUND!");
}
}
答案 1 :(得分:0)
让save
成为File
而不是愚蠢的String
,然后您可以在其上调用listFiles()
,它会返回File
中的File save = new File(root, "Save");
for (File f : save.listFiles()) {
// check each file
if (f.getName().startWith("3_test.txt") {
// whatever
}
}
数组目录。然后,您可以遍历数组。
{{1}}
答案 2 :(得分:0)
使用listFiles()
获取任何目录的所有子文件,并使用file.getName()
获取文件的名称。
示例强>
String folderName = Environment.getExternalStorageDirectory().getAbsolutePath();
String folderNameStr = "Save";
File destDir = new File(folderName+"/"+folderNameStr);
File[] childFiles =destDir.listFiles();
String childFileName = null;
for(File child: childFiles){
childFileName = child.getName();
if(!childFileName.equals("3_test")){
// do your task
}
System.out.println(childFileName);
}