kotlin 文件 按日期排序
时间: 2024-02-21 21:12:24 浏览: 23
你可以使用Kotlin的标准库中的File类来列出一个目录中的所有文件,并使用compareByDescending函数按照日期进行排序。以下是一个示例代码:
```kotlin
import java.io.File
fun main() {
val directory = File("/path/to/directory")
val files = directory.listFiles() ?: arrayOf<File>()
val sortedFiles = files.sortedWith(compareByDescending { it.lastModified() })
for (file in sortedFiles) {
println("${file.name} - ${file.lastModified()}")
}
}
```
在上面的代码中,我们首先使用File类来获取要排序的目录中的所有文件。然后,我们使用Kotlin的空安全运算符来确保在目录为空时不会抛出异常。
接下来,我们使用sortedWith函数和compareByDescending函数来按照文件的最后修改时间进行排序。最后,我们遍历排序后的文件列表并打印出它们的名称和最后修改时间。
请注意,此代码假定目录中只包含文件,而不是其他目录或符号链接。如果目录中包含子目录或符号链接,您可能需要对代码进行修改以处理这些情况。
相关问题
kotlin按行读取文件
在Kotlin中,可以使用`readLines`方法按行读取文件内容。该方法会返回一个字符串的列表,列表中的每个元素都是文件的一行内容。
以下是一个示例代码:
```kotlin
val file = File(file_path)
val lines = file.readLines()
for (line in lines) {
println(line)
}
```
上述代码首先创建一个`File`对象,然后使用`readLines`方法读取文件的所有行,并将结果保存在`lines`变量中。接下来,使用`for`循环遍历`lines`列表,并打印每一行的内容。
注意:在使用该方法之前,需要导入`java.io.File`类。
用Kotlin写个堆排序
我不太懂Kotlin,但是我可以给你一个用Java写的堆排序的例子:
public static void sort(int arr[])
{
int n = arr.length;
// Build heap (rearrange array)
for (int i = n / 2 - 1; i >= 0; i--)
heapify(arr, n, i);
// One by one extract an element from heap
for (int i=n-1; i>=0; i--)
{
// Move current root to end
int temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
// call max heapify on the reduced heap
heapify(arr, i, 0);
}
}
// To heapify a subtree rooted with node i which is
// an index in arr[]. n is size of heap
static void heapify(int arr[], int n, int i)
{
int largest = i; // Initialize largest as root
int l = 2*i + 1; // left = 2*i + 1
int r = 2*i + 2; // right = 2*i + 2
// If left child is larger than root
if (l < n && arr[l] > arr[largest])
largest = l;
// If right child is larger than largest so far
if (r < n && arr[r] > arr[largest])
largest = r;
// If largest is not root
if (largest != i)
{
int swap = arr[i];
arr[i] = arr[largest];
arr[largest] = swap;
// Recursively heapify the affected sub-tree
heapify(arr, n, largest);
}
}