我给你改一下,没有错误了,原因好好看看书上有关静态方法和内部类的内容:
import java.io.*;
import java.text.DateFormat;
import javax.swing.JOptionPane;
import java.util.*;
import java.text.*;public class SortedList
{
private DateFormat dateFormatter
=DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT);
private static int totalsize=0;
public void countSize(String filename)
{
File f=new File(filename);
if(!f.isDirectory())
{
totalsize+=f.length();
System.out.println(" "+f.length());
}
else
{
String[] files;
files=f.list();
for(int i=0;i<files.length;i++)
{
files[i]=filename+"\\"+files[i];
System.out.println(files[i]);
countSize(files[i]);
}
}
}
private static class SorredBySize implements Comparator
{
public int compare(Object a,Object b)
{
SortedList s1=new SortedList();
s1.countSize((String)a);
int size1=totalsize;
totalsize=0;
s1.countSize((String)b);
int size2=totalsize;
totalsize=0;
return (size1<size2?1:(size1==size2?0:-1));
}
}
public static void main(String[] args)
{
SortedList sortedList=new SortedList();
String filename=JOptionPane.showInputDialog(sortedList,"input the filename");
File file=new File(filename);
String[] list=file.list();
ArrayList alist=new ArrayList();
for(int i=0;i<list.length;i++)
{
alist.add(list[i]);
}
if(args.length!=1) Collections.sort(alist);
else
{
if(args[0].equals("-s")) Collections.sort(alist,new SortedList.SorredBySize());
}
for(int i=0;i<alist.size();i++)
{
System.out.println(alist.get(i));
}
}
}
import java.io.*;
import java.text.DateFormat;
import javax.swing.JOptionPane;
import java.util.*;
import java.text.*;public class SortedList
{
private DateFormat dateFormatter
=DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT);
private static int totalsize=0;
public void countSize(String filename)
{
File f=new File(filename);
if(!f.isDirectory())
{
totalsize+=f.length();
System.out.println(" "+f.length());
}
else
{
String[] files;
files=f.list();
for(int i=0;i<files.length;i++)
{
files[i]=filename+"\\"+files[i];
System.out.println(files[i]);
countSize(files[i]);
}
}
}
private static class SorredBySize implements Comparator
{
public int compare(Object a,Object b)
{
SortedList s1=new SortedList();
s1.countSize((String)a);
int size1=totalsize;
totalsize=0;
s1.countSize((String)b);
int size2=totalsize;
totalsize=0;
return (size1<size2?1:(size1==size2?0:-1));
}
}
public static void main(String[] args)
{
SortedList sortedList=new SortedList();
String filename=JOptionPane.showInputDialog(sortedList,"input the filename");
File file=new File(filename);
String[] list=file.list();
ArrayList alist=new ArrayList();
for(int i=0;i<list.length;i++)
{
alist.add(list[i]);
}
if(args.length!=1) Collections.sort(alist);
else
{
if(args[0].equals("-s")) Collections.sort(alist,new SortedList.SorredBySize());
}
for(int i=0;i<alist.size();i++)
{
System.out.println(alist.get(i));
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货