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());
}