import java.io.File;
import java.util.Arrays;
import java.util.Comparator;
public class FileSort {
public static void main(String[] args) {
File file = new File("F:/MerDescription/imp-19038075415690540");
if (file.isDirectory()) { // 判断file是否为目录
String[] fileNames = file.list();
Arrays.sort(fileNames, new Comparator<String>() {
@
public int compare(String s1, String s2) {
if(returnDouble(s1)<returnDouble(s2))
return -1;
else if(returnDouble(s1)>returnDouble(s2))
return 1;
else
return 0;
}
public double returnDouble(String str){
StringBuffer sb = new StringBuffer();
for(int i=0;i<str.length();i++){
if(Character.isDigit(str.charAt(i)))
sb.append(str.charAt(i));
else if(str.charAt(i)=='.'&&i<str.length()-1&&Character.isDigit(str.charAt(i+1)))
sb.append(str.charAt(i));
else break;
}
if(sb.toString().isEmpty())
return 0;
else
return Double.parseDouble(sb.toString());
}
});
for (int i = 0; i < fileNames.length; i++) {
System.out.println(fileNames[i]);
}
}
}
}
⑵ java中的文件名排序问题
例如我在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 = 0; i < content.length; i++)
System.out.println(content[i]);
}
}
输出结果:
d1
d2
d3
d11
d22
⑶ java读取多个txt文件内容,并按照文件名称排序
有一些假定,每个文本文件只保存一行数据,只有两个地点,自己看看吧,文件格式不正确,自己修改吧.可以把指定目录内的所有txt文件,合并后保存到指定的txt文件中.
package net.netjava.fileutil;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author HP
*/
public class FileTools {
private final String aPrefix="aaaa";
private final String bPrefix="bbbb";
/**
* 返回第一行内容
* @param fname 文本文件名称
* @return
* @throws java.io.IOException
*/
private String readLineFromTxt(String fname)throws IOException {
String line; // 用来保存每行读取的内容
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fname)));
line = reader.readLine(); // 读取第一行
reader.close();
return line;
}
/**
*
* @param a
* @param b
* @param fname
*/
private void writeToTxt(List a,List b,String fname)throws IOException {
PrintStream ps = new PrintStream(new FileOutputStream(fname));
for(int i=0;i<a.size();i++)
ps.println(a.get(i));
for(int i=0;i<b.size();i++)
ps.println(b.get(i));
ps.close();
}
/**
* 合并指定目录内的多个文本文件
* @param strPath 批量文本文件所在目录名称
* @param strFile 生成的文本文件名称
* @return
*/
public boolean mergeFile(String strPath,String strFile){
boolean f=true;
List listA=new ArrayList();//aaaa内容
List listB=new ArrayList();//bbbb内容
File path=new File(strPath);
if(!path.exists()||!path.isDirectory()){//输入的必须是目录
f=false;
}else{
try{
String[] fname=path.list(new FilenameFilter(){
public boolean accept(File dir, String name) {
if(name!=null&&name.endsWith(".txt"))
return true;
else
return false;
}
});//获取目录内所有.txt结尾的文件名字
for(int i=0;i<fname.length;i++){
String tmp=this.readLineFromTxt(strPath+"\\"+fname[i]);
if(tmp==null)
continue;
if(fname[i].startsWith(aPrefix)){
listA.add(aPrefix+tmp);
}else if(fname[i].startsWith(bPrefix)){
listB.add(bPrefix+tmp);
}
}
this.writeToTxt(listA, listB, strFile);
}catch(Exception e){
e.printStackTrace();
f=false;
}
}
return f;
}
public static void main(String[] args){
FileTools ft=new FileTools();
ft.mergeFile("c:\\txt", "d:\\out.txt");
}
}
⑷ JAVA里怎样对指定目录的文件按文件名排序
通过File类的list方法拿到目录下所有的文件名,然后对文件名数组排序
⑸ 文件的读取与输出并排序 Java编程
参数里面的isAscend 用来决定是升序排列 还是降序排列:
/***
* 按最后修改时间排序
* @param list
* @param isAscend
*/
public static void sortListByTime(List<FileInfo> 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(List<FileInfo> 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(List<FileInfo> list , boolean isAscend) {
// 对ListView中数据list排序
ComparatorByName comparator = new ComparatorByName(isAscend);
if (!list.isEmpty()) {
Log.e("sortListByName()", "");
synchronized (list) {
Collections.sort(list, comparator);
}
}
}
⑹ java获得了一个文件数组File[] files,现在要对files排序
File dir = new File("d:\\qincidong\\资料\\");
File[] files = dir.listFiles();
List<File> list1 = new ArrayList<File>();
List<File> list2 = new ArrayList<File>();
List<File> list3 = new ArrayList<File>();
for (File f : files) {
if (f.isDirectory()) {
list1.add(f);
}
if (f.isFile()) {
list2.add(f);
}
}
Collections.sort(list1);
Collections.sort(list2);
list3.addAll(list1);
list3.addAll(list2);
for (File f : list3) {
System.out.println(f.getName() + "---------" + f.isDirectory());
}
⑺ 在java中,如何实现英文名字的排序
给你个例子啊。你看过之后就明白了。
import java.util.Arrays;
public class EnglishSort {
public static void main(String[] args) {
String str="IndexWriter writer = new IndexWriter(ramDir, analyzer)";
StringBuffer buff=new StringBuffer(str);
char[] arr=str.toCharArray();
Arrays.sort(arr);
for(int i=0,j=0;i<arr.length;i++){
if(String.valueOf(arr[i]).matches("[a-zA-Z]")){
while(true){
if(String.valueOf(buff.charAt(j)).matches("[a-zA-Z]")){
buff.setCharAt(j, arr[i]);
j++;
break;
}
j++;
}
}
}
System.out.println(buff.toString());
}
}
⑻ java 对一个文本文件进行从小到大的排序
@org.junit.Test
publicvoidtest3()throwsException{
BufferedReaderb=newBufferedReader(newInputStreamReader(newFileInputStream(newFile("c:/a.txt"))));
Stringa=null;
Stringtxt="";
while((a=b.readLine())!=null){
txt=txt+a;
}
System.err.println(txt);
String[]txts=txt.split("");
Arrays.sort(txts);
BufferedWriterw=newBufferedWriter(newFileWriter(newFile("c:/a.txt")));
for(Stringstring:txts){
if(string!=null&&!string.equals("")){
w.append(string);
}
//System.err.println(string);
}
w.flush();
//System.err.println(txts.toString());
}