JAVA里怎样对指定目录的文件按文件名排序

Python019

JAVA里怎样对指定目录的文件按文件名排序,第1张

File类里面有个方法list()就是列出指定文件夹下面的所有的文件,下面是一个测试程序,我已经调试好了,希望能帮到你~!

还有问题可以HI我~!

import java.io.File

public class ListFiles {

public static void main(String[] args) {

// TODO Auto-generated method stub

String path = "D:\\"//文件夹的路径

File file = new File(path)

String[] files = file.list()

for(String f :files){

System.out.println(f)

}

}

}

例如我在C盘a目录里有几个你那样的文件:

程序:

import java.io.File

import java.util.Arrays

import java.util.Comparator

public class Test {

public static void main(String[] args) {

File file = new File("C:\\a")

String[] content = file.list()

Arrays.sort(content, new Comparator() {

public int compare(Object arg0, Object arg1) {

String str1 = (String) arg0

String str2 = (String) arg1

if (Integer.parseInt(str1.substring(1)) >Integer.parseInt(str2

.substring(1))) {

return 1

}

return 0

}

})

for (int i = 0i <content.lengthi++)

System.out.println(content[i])

}

}

输出结果:

d1

d2

d3

d11

d22

我特意写的规范了一些

楼主看一下希望有帮助吧

12楼写的太混乱了 3楼和我这个异曲同工吧

我建了Sutdent的类和对象 用接口进行了排序 这样方便一点感觉 最好不要用一对字符串当处理的对象 很混乱 组织成对象好些

如果不是遍历 是取出某有个特定下标的值 数组最好不要用数字 用有特殊意义的常量

这样可读性更强些

文件每行是一个记录的 用BufferReader和Writer最恰当 因为有readLine和writeLine方法

用集合类进行管理感觉对这种问题比较合适

这样复用性强一些感觉

还有可以改进的地方 感觉用串行化更好 但要是非输出文本 就这样吧

import java.io.BufferedReader

import java.io.BufferedWriter

import java.io.FileReader

import java.io.FileWriter

import java.util.ArrayList

import java.util.Collections

import java.util.Comparator

public class Manager {

private BufferedReader input

private BufferedWriter output

private ArrayList<Student>students//存放所有的学生对象的List

//读入文件

public void read() {

students = new ArrayList<Student>()

try {

this.input = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\2.txt"))

String s = new String()

while ((s = input.readLine()) != null) {

String[] nameAndScore = s.split(" ")

this.students.add(new Student(nameAndScore[Student.NAME],

Integer.parseInt(nameAndScore[Student.SCORE])))

}

this.sort()//按分数将学生排序

this.input.close()

} catch (Exception ex) {

ex.printStackTrace()

}

}

//写回文件

public void write() {

try {

this.output = new BufferedWriter(new FileWriter("C:\\Users\\Administrator\\Desktop\\3.txt"))

for (Student s : this.students) {

output.write(s.toString(), 0, s.toString().length())

output.newLine()

}

this.output.write(String.valueOf(this.average()), 0, String.valueOf(this.average()).length())//写入平均值

this.output.close()

} catch (Exception ex) {

ex.printStackTrace()

}

}

//排序

private void sort() {

Collections.sort(this.students, new Comparator<Student>() {

public int compare(Student o1, Student o2) {

return o2.getScore() - o1.getScore()

}

})

}

//求平均值

public float average() {

float average = (float) 0

for (Student s : this.students) {

average += s.getScore()

}

return average / (this.students.size())

}

public static void main(String[] args) {

Manager m = new Manager()

m.read()

m.write()

}

}

//Student类

class Student {

private String name

private int score

public static int NAME = 0

public static int SCORE = 1

public Student(String name, int score) {

this.name = name

this.score = score

}

public int getScore() {

return score

}

@Override

public String toString() {

return name + " " + score

}

}