Ⅰ java读取文件并对内容进行排序直接输出结果
importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;publicclassTest{publicstaticvoidmain(String[]args){=newFile("data.txt");List<String>list=newArrayList<>();try{BufferedReaderbr=newBufferedReader(newFileReader(file));while(br.ready()){list.add(br.readLine());}br.close();}catch(IOExceptione){e.printStackTrace();}for(inti=list.size()-1;i>1;i–){for(intj=1;j<i;j++){String[]split1=list.get(j+1).split("");String[]split2=list.get(j).split("");if(split1[1].compareTo(split2[1])>0){Stringtemp=list.get(j);list.set(j,list.get(j+1));list.set(j+1,temp);}}}for(inti=0;i<list.size();i++){System.out.println(list.get(i));}}}
Ⅱ Java怎么实现Windows文件夹里的排序
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获得了一个文件数组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中的文件名排序问题
例如我在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]); }}输出结果:d1d2d3d11d22
Ⅳ JAVA里怎样对指定目录的文件按文件名排序
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); } }}
Ⅵ java读写文件并排序
import java.io.*;import java.util.*;import java.lang.*;import java.util.Scanner;class Test{ private List<String> name; private Map<String,Double> balance; private Map<String,Double> consume; private Map<String,Double> count; public List getEmployeeFromBalance(){ //也可以从余额表中获得员工姓名列表 List<String> name=new ArrayList<String>(); Set set=balance.keySet(); Object[] list=set.toArray(); for(int i=0;i<list.length;i++) name.add((String)list[i]); this.name=name; return name; } public List readEmployee(String filename)throws Exception{ //读取员工文件 List<String> name=new ArrayList<String>(); File file=new File(filename); InputStream in=new FileInputStream(file); Scanner read=new Scanner(in); String line=""; for(int i=0;;i++){ if(!read.hasNextLine()) break; line=read.next(); //if(line==null || line.equals("")) break; name.add(line); } in.close(); this.name=name; return name; } public Map readBalanceFile(String filename)throws Exception{ //读取余额文件 Map<String,Double> map=new HashMap<String,Double>(); File file=new File(filename); InputStream in=new FileInputStream(file); Scanner read=new Scanner(in); String line=""; String[] sp=null; Double balance=null; for(;;){ if(!read.hasNextLine()) break; line=read.next(); if(line==null || line=="") break; sp=line.split(","); balance=Double.valueOf(sp[1]); map.put(sp[0],balance); } in.close(); this.balance=map; return map; } public Map readConsumeFile(String filename)throws Exception{ //读取消费文件 Map<String,Double> map=new HashMap<String,Double>(); File file=new File(filename); InputStream in=new FileInputStream(file); Scanner read=new Scanner(in); String line=""; String[] sp=null; Double balance=null; double temp=0; for(;;){ if(!read.hasNextLine()) break; line=read.next(); if(line==null || line.equals("") || line.equals("\n")) break; sp=line.split(","); if(map.get(sp[0])!=null){ //解决一人多次消费时Map–key有重复 temp=(Double)(map.get(sp[0])).doubleValue(); temp=temp+Double.valueOf(sp[2]); balance=Double.valueOf(temp); temp=0; } else balance=Double.valueOf(sp[2]); map.put(sp[0],balance); } in.close(); this.consume=map; return map;}public Map countConsume()throws Exception{ //计算余额 Map<String,Double> count=new HashMap<String,Double>(); double formerly=0,user=0; for(int i=0;i<name.size();i++){ formerly=Double.parseDouble(balance.get(name.get(i)).toString()); user=Double.parseDouble(consume.get(name.get(i)).toString()); count.put((String)name.get(i),Double.valueOf(formerly-user)); } this.count=count; return count; } public void writeCountFile(String filename)throws Exception{ //打印结果 File file=new File(filename); PrintWriter print=new PrintWriter(file); for(int i=0;i<name.size();i++){ print.print(name.get(i)+","); print.print(Double.parseDouble(count.get(name.get(i)).toString())); print.println(); } print.close(); } public void writeBalanceZero(String filename)throws Exception{ //将余额为0就打印出来 File file=new File(filename); PrintWriter print=new PrintWriter(file); int p=0; for(int i=0;i<name.size();i++){ if(Double.parseDouble(count.get(name.get(i)).toString())==0){ p++; print.print(name.get(i)+","); print.print(Double.parseDouble(count.get(name.get(i)).toString())); print.println(); } } if(p==0) print.println("没有人余额为0"); print.close(); } static public void main(String[] str)throws Exception{ Test t=new Test(); t.readBalanceFile("1.txt"); t.getEmployeeFromBalance(); t.readConsumeFile("2.txt"); t.countConsume(); t.writeBalanceZero("c.txt"); for(int i=0;i<t.count.size();i++){ System.out.print(t.name.get(i)+","); System.out.print(t.count.get(t.name.get(i))+"\n"); } System.out.println("获得结束,结果保存在c.txt"); }}////////////////////////////////////*1.txt王五,1000李四,2000张三,30002.txt张三,牛肉面,500张三,鸡蛋,400王五,牛肉面,300张三,牛肉面,400李四,冷面,600王五,水煮肉片,100*//////////////////////////////////////
Ⅶ JAVA 对文件夹下所有文件按文件大小进行排序,请问哪里有问题
你通过递归得到文件列表,但是你通过重写compare和equals方法,比较文件大小这个有待商榷,一般文版件大小是通过字节权数来判断的,通用方法为File.length()方法,给你个文件参考一下,没有package,很简单,文件夹路径自己得改一下,否则找不到文件。
Ⅷ java.io.File 中File.list()的顺序问题。
自己定义一个Comparator,然后用Arrays.sort(file,newFileComparator())。
FileComparator可以按下面的来定义:
<File>{@Overridepublicintcompare(Filef1,Filef2){Strings1=f1.getName().substring(3);Strings2=f2.getName().substring(3);inti1=Integer.parseInt(s1);inti2=Integer.parseInt(s2);returni1-i2;}}
Ⅸ java文件名排序,在windows上eclipse编译执行都没问题,发布到服务器上不能正常执行
你可以搜索一下“saihu师父”,那是程序员问答网站,应该很快有人来回答你这个关于 JAVA 的问题。
Ⅹ 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"); }}