「java大文件排序」java基本数据类型大小排序
本篇文章给大家谈谈java大文件排序,以及java基本数据类型大小排序对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
JAVA 对文件夹下所有文件按文件大小进行排序,请问哪里有问题?
你通过递归得到文件列表,但是你通过重写compare和equals方法,比较文件大小这个有待商榷,一般文件大小是通过字节数来判断的,通用方法为File.length()方法,给你个文件参考一下,没有package,很简单,文件夹路径自己得改一下,否则找不到文件。
写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读取文件 排序 写出文件
我特意写的规范了一些
楼主看一下希望有帮助吧
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基本数据类型大小排序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-26,除非注明,否则均为
原创文章,转载请注明出处。