- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以,我有一个 ListView,它显示特定目录中所有文件的名称。此应用程序还会删除文件并将新文件添加到目录中。
我希望文件按创建顺序显示,但 File(directory).listFiles() 并非总是如此。如果我从一个空目录开始并开始添加文件,那么最新的文件将进入数组的位置 0,并按顺序上升到最旧的。但是,如果我删除任何文件然后添加新文件,事情就会变得很奇怪。这是一个例子...
假设我从一个空目录开始,并向其中添加了四个文件。 listFiles() 返回的数组将是:
位置 0 = 文件 #4(第四个添加)
P 1 = 文件#3
P 2 = 文件#2
P 3 = 文件#1
然后,我将删除文件 #2 和 #3。数组是:
P 0 = 文件 #4
P 1 = 文件#1
到目前为止,还不错。现在,我将添加两个新文件。我希望 listFiles() 返回的新数组是:
P 0 = 文件#6
P 1 = 文件#5
P 2 = 文件#4
P 3 = 文件#1
然而,它实际上是这样的:
P 0 = 文件 #4
P 1 = 文件#6
P 2 = 文件#5
P 3 = 文件#1
但是如果我随后添加文件 #7,新数组将是:
P 0 = 文件#7
P 1 = 文件#4
P 2 = 文件#6
P 3 = 文件#5
P 4 = 文件#1
基本上,如果删除了任何文件,新文件将填充它们在数组中的“旧位置”。在任何新文件进入位置 0 之前,必须填充所有“旧位置”。任何人都可以解释这种行为吗?另外,是否有一种快速简便的方法可以将文件数组重新排序为我想要的时间顺序?
最佳答案
获取文件列表是使用File.listFiles()并且文档指出这不能保证返回文件的顺序。因此你需要写一个 Comparator使用 File.lastModified()并将其与文件数组一起传递给 Arrays.sort() .
代码:
File[] files = directory.listFiles();
Arrays.sort(files, new Comparator<File>(){
public int compare(File f1, File f2)
{
return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
} });
试试这个,让我知道会发生什么......
编辑:
您还可以查看 apache commons IO , 它有一个内置的 last modified comparator以及许多其他用于处理文件的实用工具。
关于android - 我不明白 listFiles() 返回的文件数组的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10023522/
当我尝试使用方法 someFile.listFiles(FileFilter foobar) 时,出现错误 The method listFiles(FilenameFilter) in the ty
我曾经从一本关于方法引用的书中读到以下代码。 File[] hiddenFiles = new File(".").listFiles(File::isHidden) 当我从文件 API 查找 lis
这个问题已经有答案了: Listing only files in directory [closed] (3 个回答) 已关闭 5 年前。 我注意到listFiles()方法返回文件和目录,但是我想
作为处理的结果,一些数据文件被写入磁盘。 两台服务器(MAC 和 Linux)匹配的文件数 系统间的文件名相同 文件内容在系统之间是相同的,由 md5sum 衡量 然后根据从所述文件中读取的内容计算报
我编写了以下程序,它读取目录中的所有文件。所有文件名均由数字组成(例如 10023134.txt)。 File dir = new File(directoryPath); File[] files
我正在尝试迭代文件夹 我的文件位于 D:\PROJECT_FOLDER\rootProject\semiRootProject\project\build\resources\main\com\xxx
我使用此代码以递归方式从给定目录获取所有文件。 List fileList = (List) FileUtils.listFiles(new File(directoryName), null , t
import java.io.File; public class FileDemo { public static void main(String[] args) { String sou
我的问题是,简而言之,如何将 File.listFiles() 返回的 File 对象转换为 File 的扩展类?我将返回的对象放入 ArrayList 中。我的第一个想法是将文件对象转换为我的类,F
private static void getFTPFileProperties(FTPClient client, String ftpLocation, String pa
似乎方法 listFiles() 也列出了所有目录并威胁所有结果作为目录。 最佳答案 File Java 中的对象可以表示文件或目录。可以通过isFile()查看是文件还是目录和 isDirector
在我的项目中,我有一个 resources 目录,里面有一个 my_directory。 my_directory 包含文本文件。 我想循环这个目录: URL resource = Resources
我想使用列表文件而不是手动设置对象集合: @Paramaters public static Collection data() { Object[][] data = new Object
所以,我有一个 ListView,它显示特定目录中所有文件的名称。此应用程序还会删除文件并将新文件添加到目录中。 我希望文件按创建顺序显示,但 File(directory).listFiles()
我正在使用 Android Emulator 2.2 版本开发一个小应用程序。我应该列出目录下的所有图像文件(jpg)文件。我通过 ADB puash 命令将文件复制到“/data”。 示例:/dat
有什么方法可以在已打包到 jar 中的目录上使用 listFiles() 吗? 假设我的资源目录中有一个包含一些文本文件的目录:texts/text1.txt 和 texts/text2.txt。 在
我是 hadoop 和其他东西的业余爱好者。现在,我正在尝试访问 hadoop 集群 (HDFS) 并从客户端 eclipse 检索文件列表。我在hadoop java client上设置好需要的配置
我在看这个方法:FileSystem.listFiles(Path f, boolean recursive) List the statuses and block locations of the
在一个文件夹中,我有三个文件 A.txt、B.txt、C.txt。我正在执行下面提到的程序。 for(File a: path.listFiles()){ Sy
File.listFiles() 方法列出文件夹的内容。然而,在 Windows 上,当您在根驱动器上调用该方法时,它还会产生一些 - 缺少更好的短语 - “虚拟”文件夹(如“文档和设置”,在最近的
我是一名优秀的程序员,十分优秀!