「java大文件排序」java大数据量排序

博主:adminadmin 2022-11-28 05:38:06 64

本篇文章给大家谈谈java大文件排序,以及java大数据量排序对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

写java一个程序,它能把你机子上某个文件夹下的所有文件按照文件大小的顺序从大到小输出

如果要按照从小到大,只需要调整那个return -1和return 1得位置即可

import java.io.File;

import java.io.FileFilter;

import java.util.Arrays;

import java.util.Comparator;

public class Apl {

public static void main(String args[]) {

String folderName = "C:\\Documents and Settings\\test\Desktop";//检测的文件夹

File file = new File(folderName);

if(!file.exists() || !file.isDirectory()){

System.out.println("Error! It's not a directory!");

return;

}

File[] files = file.listFiles(new FileOnlyFilter());

Arrays.sort(files, new FileLengthComparator());

for(File f: files){

System.out.println(f.getName() + " length is: " + f.length());

}

}

}

class FileOnlyFilter implements FileFilter{

public boolean accept(File f) {

if(f.isFile()){

return true;

}

return false;

}

public String getDescription() {

return null;

}

}

class FileLengthComparator implements ComparatorFile{

public int compare(File o1, File o2) {

if(o1.length() o2.length()){

return 1;

}else if(o1.length() == o2.length()){

return 0;

}else{

return -1;

}

}

}

-----------------------

Calculation.doc length is: 4146176

Design Specs.doc length is: 2550784

v1.1 (final).zip length is: 2163195

v1.1 (final).doc length is: 1527296

esign Specs.doc length is: 186880

Sequence.JPG length is: 51629

tese.JPG length is: 33938

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

通过File类的list方法拿到目录下所有的文件名,然后对文件名数组排序

JAVA 对文件夹下所有文件按文件大小进行排序,请问哪里有问题?

你通过递归得到文件列表,但是你通过重写compare和equals方法,比较文件大小这个有待商榷,一般文件大小是通过字节数来判断的,通用方法为File.length()方法,给你个文件参考一下,没有package,很简单,文件夹路径自己得改一下,否则找不到文件。

文件的读取与输出并排序 Java编程

参数里面的isAscend 用来决定是升序排列 还是降序排列:

/***

* 按最后修改时间排序

* @param list

* @param isAscend

*/

public static void sortListByTime(ListFileInfo list , boolean isAscend) {

// 对ListView中数据list排序

ComparatorByTime comparator = new ComparatorByTime(isAscend);

if (!list.isEmpty()) {

Log.e("sortListByTime()", "");

synchronized (list) {

Collections.sort(list, comparator);

}

}

}

/**

* 按文件大小排序

* @param list

*/

public static void sortListBySize(ListFileInfo list , boolean isAscend) {

// 对ListView中数据list排序

ComparatorBySize comparator = new ComparatorBySize(isAscend);

if (!list.isEmpty()) {

Log.e("sortListBySize()", "");

synchronized (list) {

Collections.sort(list, comparator);

}

}

}

/**

* 按文件名称排序

* @param list

*/

public static void sortListByName(ListFileInfo list , boolean isAscend) {

// 对ListView中数据list排序

ComparatorByName comparator = new ComparatorByName(isAscend);

if (!list.isEmpty()) {

Log.e("sortListByName()", "");

synchronized (list) {

Collections.sort(list, comparator);

}

}

}

JAVA读取文件 排序 写出文件

我特意写的规范了一些

楼主看一下希望有帮助吧

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 ArrayListStudent students;//存放所有的学生对象的List

//读入文件

public void read() {

students = new ArrayListStudent();

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 ComparatorStudent() {

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;

}

}

java大文件排序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java大数据量排序、java大文件排序的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。