输出其中有所需文件的文件夹
Output of folders inside which there is a desired file
在我的程序中,实现了以下内容其中有一个listView
,我把里面有一定数据的文件夹拿出来。但其中一些是空的。我正在尝试检查它是否不会在 listView
中为我显示空文件夹
public static File dir= new File(Environment.getExternalStorageDirectory().getPath()+"/Sales/Archive");
ArrayList<String> theNamesOfFiles = new ArrayList<>();
File[] filelist = dir.listFiles();
for (int i = 0; i < filelist.length; i++) {
long diff = (new Date().getTime() - filelist[i].lastModified()) / 144 / 144 / 144;
Arrays.sort(filelist, Comparator.comparingLong(File::lastModified).reversed());
if (diff < 72)
theNamesOfFiles.add(filelist[i].getName());
}
经过一些尝试,结果证明他进入了那里的每个文件寻找我需要的东西。但是没有它们他显示的一切都一样
File Path = new File((new File(ArchiveDir)).getParent());
File[] listFile = Path.listFiles();
for (File file : listFile) {
File[] listFile2 = file.listFiles();
for (File file2 : listFile2){
if (file.isDirectory() && file2.getName().toUpperCase().contains("S")) {
File[] filelist = Path.listFiles();
for (int i = 0; i < filelist.length; i++) {
long diff = (new Date().getTime() - filelist[i].lastModified()) / 144 / 144 / 144;
Arrays.sort(filelist, Comparator.comparingLong(File::lastModified).reversed());
if (diff < 72)
theNamesOfFiles.add(filelist[i].getName());
}
}
}
}
据我了解,theNamesOfFiles
是一个文件夹列表。它包含单个文件夹的名称。所以,如果你想检查该文件夹是否为空,可以通过 file.length()
函数来完成。其中 returns 0
如果 file
为空。
这是我认为最适合您的解决方案。
if (file.isDirectory() && file2.getName().toUpperCase().contains("S")) {
File[] filelist = file2.listFiles(); //update
for (int i = 0; i < filelist.length; i++) {
long diff = (new Date().getTime() - filelist[i].lastModified()) / 144 / 144 / 144;
Arrays.sort(filelist, Comparator.comparingLong(File::lastModified).reversed());
if (diff < 72)
if(filelist[i].length() !=0) //update
theNamesOfFiles.add(filelist[i].getName());//update
}
}
这将确保索引 i
处的元素不为空。如果它是空的,它将被跳过。我不会被添加到你的列表中。
这是我的问题的解决方案。但其中有细微差别。我的程序每次启动时都会创建一个文件(数据备份),出于某种原因,这段代码只会跳过创建的文件。
int i = 0;
File Path = new File((new File(ArchiveDir)).getParent());
File[] listFile = Path.listFiles();
for (File file : listFile) {
i ++;
File[] listFile2 = file.listFiles();
for (File file2 : listFile2){
if (file2.getName().toUpperCase().contains("S")) {
long diff = (new Date().getTime() - listFile[i].lastModified()) / 144 / 144 / 144;
Arrays.sort(listFile, Comparator.comparingLong(File::lastModified).reversed());
if (diff < 72) {
theNamesOfFiles.add(listFile[i].getName());
}
}
}
}
在我的程序中,实现了以下内容其中有一个listView
,我把里面有一定数据的文件夹拿出来。但其中一些是空的。我正在尝试检查它是否不会在 listView
public static File dir= new File(Environment.getExternalStorageDirectory().getPath()+"/Sales/Archive");
ArrayList<String> theNamesOfFiles = new ArrayList<>();
File[] filelist = dir.listFiles();
for (int i = 0; i < filelist.length; i++) {
long diff = (new Date().getTime() - filelist[i].lastModified()) / 144 / 144 / 144;
Arrays.sort(filelist, Comparator.comparingLong(File::lastModified).reversed());
if (diff < 72)
theNamesOfFiles.add(filelist[i].getName());
}
经过一些尝试,结果证明他进入了那里的每个文件寻找我需要的东西。但是没有它们他显示的一切都一样
File Path = new File((new File(ArchiveDir)).getParent());
File[] listFile = Path.listFiles();
for (File file : listFile) {
File[] listFile2 = file.listFiles();
for (File file2 : listFile2){
if (file.isDirectory() && file2.getName().toUpperCase().contains("S")) {
File[] filelist = Path.listFiles();
for (int i = 0; i < filelist.length; i++) {
long diff = (new Date().getTime() - filelist[i].lastModified()) / 144 / 144 / 144;
Arrays.sort(filelist, Comparator.comparingLong(File::lastModified).reversed());
if (diff < 72)
theNamesOfFiles.add(filelist[i].getName());
}
}
}
}
据我了解,theNamesOfFiles
是一个文件夹列表。它包含单个文件夹的名称。所以,如果你想检查该文件夹是否为空,可以通过 file.length()
函数来完成。其中 returns 0
如果 file
为空。
这是我认为最适合您的解决方案。
if (file.isDirectory() && file2.getName().toUpperCase().contains("S")) {
File[] filelist = file2.listFiles(); //update
for (int i = 0; i < filelist.length; i++) {
long diff = (new Date().getTime() - filelist[i].lastModified()) / 144 / 144 / 144;
Arrays.sort(filelist, Comparator.comparingLong(File::lastModified).reversed());
if (diff < 72)
if(filelist[i].length() !=0) //update
theNamesOfFiles.add(filelist[i].getName());//update
}
}
这将确保索引 i
处的元素不为空。如果它是空的,它将被跳过。我不会被添加到你的列表中。
这是我的问题的解决方案。但其中有细微差别。我的程序每次启动时都会创建一个文件(数据备份),出于某种原因,这段代码只会跳过创建的文件。
int i = 0;
File Path = new File((new File(ArchiveDir)).getParent());
File[] listFile = Path.listFiles();
for (File file : listFile) {
i ++;
File[] listFile2 = file.listFiles();
for (File file2 : listFile2){
if (file2.getName().toUpperCase().contains("S")) {
long diff = (new Date().getTime() - listFile[i].lastModified()) / 144 / 144 / 144;
Arrays.sort(listFile, Comparator.comparingLong(File::lastModified).reversed());
if (diff < 72) {
theNamesOfFiles.add(listFile[i].getName());
}
}
}
}