File d = new File("你的文件夹路径"); String[] fileNames = d.list();// 自己写个内部类,然后重写 compare, : class MyComparator implements Comparator { public int compare(Object obj1, Object obj2) {Collections.sort(fileNames , new MyComparator()); for (int i=0; i < fileNames.length ; i++) { File read = new File(fileNames[i]);
to lianhg(lianhg): 你程序是不是没写完啊?Object obj1和Object obj2要进行比较吧?File read ,这个read对象要进行什么操作呢??能不能写清楚呢,谢谢拉!
File d = new File("你的文件夹路径"); String[] fileNames = d.list();// 自己写个内部类,然后重写 compare, : class MyComparator implements Comparator { public int compare(Object obj1, Object obj2) { String name1 = (String) obj1; String name2 = (String) obj2; int i = 0; i = name1.compareTo(name2); return i; } } Collections.sort(fileNames , new MyComparator()); for (int i=0; i < fileNames.length ; i++) { System.out.println(fileNames[i]); }
lianhg(lianhg) 大哥: Collections.sort(fileNames , new MyComparator());不能这样写吧,我做的测试程序是报错的啊!!!你可以试试! package com.manual; import java.io.*; import java.util.*; //自己写个内部类,然后重写 compare, : class MyComparator implements Comparator { public int compare(Object obj1, Object obj2) { String name1 = (String) obj1; String name2 = (String) obj2; int i = 0; i = name1.compareTo(name2); return i; } } public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File d = new File("Data/"); String[] fileNames = d.list();
Collections.sort(fileNames , new MyComparator()); //Arrays.sort(fileNames , new MyComparator()); for (int i=0; i < fileNames.length ; i++) { System.out.println(fileNames[i]); } }} 下面这行报错的! Collections.sort(fileNames , new MyComparator()); 还有你的compare方法就能将字母从A---Z排序吗??
File d = new File("D:\\temp\\A"); String[] fileNames = d.list(); Arrays.sort(fileNames); for (int i=0; i < fileNames.length ; i++) { System.out.println(fileNames[i]); }
因为使用了 jdk1.5 缘故,1.4 不出错。以下是对应 1.5 的代码 File d = new File("D:\\temp\\A"); String[] fileNames = d.list(); Arrays.sort(fileNames, new Comparator<String>() { public int compare(String str1, String str2) { int i = 0; i = str1.compareTo(str2); return i; } } ); for (int i=0; i < fileNames.length ; i++) { System.out.println(fileNames[i]); }
to lianhg(lianhg),guaxixi627() : 我对相对路径的问题一直很疑惑! 1)eclipse中的相对路径应该和.class文件一个级别吧还是和.java文件一个级别?假如我这一行File f=new File("filepath");的filepath想换成Data\, File f = new File("Data\");我这个Data目录应该放在我源文件的包com.manual下和我这个程序同一级还是应该放在我编译后的这个程序.class文件的同一级??以前我问其它人都说放.class一级,可是我试验放源文件一级是正确的?到底是怎么回事?? 2)我在com.manual包下创建一个文件夹Data,为什么创建好的文件夹图标是包的图标,不是文件夹图标呢???而且创建的文件夹的名字怎么不叫Data,eclipse里怎么叫com.manual.Data,我明明创建的是文件夹怎么出来是包??
File f = new File("Data\\") 这句中 Data文件夹的路径为: 盘符名:/项目名/Data ,如果你想要对某个包下面的文件排序,就应该改成File f = new File("com\\manual\\Data") 不知道我这样回答是否解决了你所要问的。
lianhg(lianhg):我把你说的那两行加里面了,输出如下: path :E:\eclipse\eclipse\workspace\ManualBrowser ManualBrowser是我eclipse建立的工程名啊!我Data目录在我ManualBrowser\j2src\com.manual包下面啊!我这句话要改成:File f = new File(path+"\j2src\com.manual");是这样吗? 你这样是取绝对路径啊!!可以不可以直接用相对路径表示???
是 File f=new File(path+"j2src\\com\\manual\\Data");吗?\ 我这样写程序报错啊! path :E:\eclipse\eclipse\workspace\ManualBrowser Exception in thread "main" java.lang.NullPointerException at java.util.Arrays.sort(Unknown Source) at com.manual.NewTest.main(NewTest.java:17)
String[] fileNames = d.list();// 自己写个内部类,然后重写 compare, :
class MyComparator implements Comparator {
public int compare(Object obj1, Object obj2) {Collections.sort(fileNames , new MyComparator()); for (int i=0; i < fileNames.length ; i++) {
File read = new File(fileNames[i]);
你程序是不是没写完啊?Object obj1和Object obj2要进行比较吧?File read ,这个read对象要进行什么操作呢??能不能写清楚呢,谢谢拉!
String[] fileNames = d.list();// 自己写个内部类,然后重写 compare, :
class MyComparator implements Comparator {
public int compare(Object obj1, Object obj2) {
String name1 = (String) obj1;
String name2 = (String) obj2;
int i = 0;
i = name1.compareTo(name2);
return i;
}
}
Collections.sort(fileNames , new MyComparator()); for (int i=0; i < fileNames.length ; i++) {
System.out.println(fileNames[i]);
}
Collections.sort(fileNames , new MyComparator());不能这样写吧,我做的测试程序是报错的啊!!!你可以试试!
package com.manual;
import java.io.*;
import java.util.*;
//自己写个内部类,然后重写 compare, :
class MyComparator implements Comparator {
public int compare(Object obj1, Object obj2) {
String name1 = (String) obj1;
String name2 = (String) obj2;
int i = 0;
i = name1.compareTo(name2);
return i;
}
}
public class Test { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
File d = new File("Data/");
String[] fileNames = d.list();
Collections.sort(fileNames , new MyComparator());
//Arrays.sort(fileNames , new MyComparator()); for (int i=0; i < fileNames.length ; i++) {
System.out.println(fileNames[i]);
}
}}
下面这行报错的!
Collections.sort(fileNames , new MyComparator());
还有你的compare方法就能将字母从A---Z排序吗??
String[] fileNames = d.list();
Arrays.sort(fileNames);
for (int i=0; i < fileNames.length ; i++) {
System.out.println(fileNames[i]);
}
/*@author guaxixi627*/
/********************/
import java.io.*;
import java.util.*;
class FileTest
{
public static void main(String[] args)
{ File f=new File(filepath);
String names[]=f.list();
Arrays.sort(names,new Comparator()//利用内部类进行排序
{
public int compare(Object o1,Object o2)
{
String s1 = (String)o1;
String s2 = (String)o2;
return s1.toLowerCase().compareTo(s2.toLowerCase());
}
});
for(int i=0;i<names.length;i++)
System.out.println(names[i]);
}
}
你上面怎么没用new MyComparator()???要不然你怎样从A到Z排序啊????
应该是这样吧:Arrays.sort(fileNames,new MyComparator());可是我这样写还是报错的!你最好测一下程序,好吗?谢谢拉!
/*@author guaxixi627*/
/********************/import java.io.*;
import java.util.*;
class FileTest
{
public static void main(String[] args)
{ File f=new File("filepath");
String names[]=f.list();
Arrays.sort(names,new Comparator()//利用内部类进行排序
{
public int compare(Object o1,Object o2)
{
String s1 = (String)o1;
String s2 = (String)o2;
return s1.toLowerCase().compareTo (s2.toLowerCase());
}
});
for(int i=0;i<names.length;i++)
System.out.println(names[i]);
}
}
File d = new File("D:\\temp\\A");
String[] fileNames = d.list();
Arrays.sort(fileNames, new Comparator<String>() {
public int compare(String str1, String str2) {
int i = 0;
i = str1.compareTo(str2);
return i;
}
}
);
for (int i=0; i < fileNames.length ; i++) {
System.out.println(fileNames[i]);
}
我对相对路径的问题一直很疑惑!
1)eclipse中的相对路径应该和.class文件一个级别吧还是和.java文件一个级别?假如我这一行File f=new File("filepath");的filepath想换成Data\,
File f = new File("Data\");我这个Data目录应该放在我源文件的包com.manual下和我这个程序同一级还是应该放在我编译后的这个程序.class文件的同一级??以前我问其它人都说放.class一级,可是我试验放源文件一级是正确的?到底是怎么回事??
2)我在com.manual包下创建一个文件夹Data,为什么创建好的文件夹图标是包的图标,不是文件夹图标呢???而且创建的文件夹的名字怎么不叫Data,eclipse里怎么叫com.manual.Data,我明明创建的是文件夹怎么出来是包??
不知道我这样回答是否解决了你所要问的。
System.out.println("path :" +path); // 当前 class 的绝对路径2)包的路径就是文件夹
你上面怎么没用new MyComparator()???要不然你怎样从A到Z排序啊????
应该是这样吧:Arrays.sort(fileNames,new MyComparator());可是我这样写还是报错的!你最好测一下程序,好吗?谢谢拉// 报错原因如下,你没有初始化 Test import java.io.*;
import java.util.*;
class FileTest
{
public static void main(String[] args)
{
Test t = new Test();
t.f();
} void f() {
File f=new File(filepath);
String names[]=f.list();
Arrays.sort(names,new Comparator()//利用内部类进行排序
{
public int compare(Object o1,Object o2)
{
String s1 = (String)o1;
String s2 = (String)o2;
return s1.toLowerCase().compareTo(s2.toLowerCase());
}
});
for(int i=0;i<names.length;i++)
System.out.println(names[i]);}}
我的意思是说用相对路径!这句话File f = new File("Data\\");这个Data目录我应该放在项目中的什么位置??是相对与谁的目录???
我按照你的说法根本不行的!
我是在我com.manual包下建立了Data文件夹,然后把程序改为:
package com.manual;import java.io.*;
import java.util.*;
class NewTest
{
public static void main(String[] args)
{ File f=new File("com\\manual\\Data");
String names[]=f.list();
// 利用内部类进行排序
Arrays.sort(names,new Comparator(){
public int compare(Object o1,Object o2)
{
String s1 = (String)o1;
String s2 = (String)o2;
return s1.toLowerCase().compareTo(s2.toLowerCase());
}
});
for(int i=0;i<names.length;i++)
System.out.println(names[i]);
}
}程序报错:
Exception in thread "main" java.lang.NullPointerException
at java.util.Arrays.sort(Unknown Source)
at com.manual.NewTest.main(NewTest.java:15)
我的意思是说用相对路径!这句话File f = new File("Data\\");这个Data目录我应该放在项目中的什么位置??是相对与谁的目录???Data目录放到项目中的任意位置都可以。根据下面获得的路径,来确定 Data目录 的位置1) String path = System.getProperty("user.dir");
System.out.println("path :" +path); // 当前 class 的绝对路径
String path = System.getProperty("user.dir");这里的user.dir是指哪个目录呢?
我在com.manual包下建立Data文件夹,这个Data目录的相对路径该怎样写???
String path = System.getProperty("user.dir");这里的user.dir是指哪个目录呢?-- 这是取得绝对路径。然后,截取字符串取得项目的路径。“项目的路径”\DATA
就是你需要的路径。
把下面的代码添加到你的程序中, 你就明白啦
String path = System.getProperty("user.dir");
System.out.println("path :" +path);
path :E:\eclipse\eclipse\workspace\ManualBrowser
ManualBrowser是我eclipse建立的工程名啊!我Data目录在我ManualBrowser\j2src\com.manual包下面啊!我这句话要改成:File f = new File(path+"\j2src\com.manual");是这样吗?
你这样是取绝对路径啊!!可以不可以直接用相对路径表示???
我这样写程序报错啊!
path :E:\eclipse\eclipse\workspace\ManualBrowser
Exception in thread "main" java.lang.NullPointerException
at java.util.Arrays.sort(Unknown Source)
at com.manual.NewTest.main(NewTest.java:17)
--> File f=new File(path+"\j2src\\com\\manual\\Data");
我把这段代码用在jsp页面中
为什么程序输出:path :C:\Program Files\Apache Software Foundation\Tomcat 5.0\bin
怎么会是Tomcat的路径?
String path = System.getProperty("user.dir");
System.out.println("path :" +path);
是不是只能用于java应用程序中,不能用于jsp页面呢?
lianhg(lianhg):
request.getContextPath()是取的WEB项目的路径,如果我Data在WEB项目下,路径就应该是"
request.getContextPath()+"/Data"对吧,我做的测试request.getContextPath()结果是/Browser,这是个相对路径,对吧?
application.getRealPath("Data\\");我测试出来是绝对路径E:\eclipse\eclipse\workspace\ManualBrowser\Browser\Data,也就是说这两种方法都可以用!
如果用request.getContextPath()的话,路径要写为request.getContextPath()+"/Data";
如果用application.getRealPath("Data\\");直接就得到了绝对路径.
是不是这样的呢?谢谢!
程序中
for(int i=0;i<names.length;i++)
System.out.println(names[i]);
为什么for()后不加{}呢??
for(int i=0;i<names.length;i++){
System.out.println(names[i]);
}
这两个有啥区别啊??
for(int i=0;i<names.length;i++) 如果循环中只有一条语句,就可以不用加 {},默认执行
这个语句。
package com.manual;import java.io.*;
import java.util.*;
class NewTest
{
public static void main(String[] args)
{ //File f=new File("com\\manual\\Data");
String path = System.getProperty("user.dir");
System.out.println("path :" +path);
File f=new File(path+"\\j2src\\com\\manual\\Data"); String names[]=f.list();
// 利用内部类进行排序
Arrays.sort(names,new Comparator(){
public int compare(Object o1,Object o2)
{
String s1 = (String)o1;
String s2 = (String)o2;
return s1.toLowerCase().compareTo(s2.toLowerCase());
}
});
for(int i=0;i<names.length;i++){
System.out.println(names[i]);
}
}
}
这段程序是黄色感叹!说Type safty:expressiong of type new Comparator() need unchecked
conversion to confirm to Comparator<? super T>
Arrays.sort(names,new Comparator(){
public int compare(Object o1,Object o2)
{
String s1 = (String)o1;
String s2 = (String)o2;
return s1.toLowerCase().compareTo(s2.toLowerCase());
}
});
import java.util.*;class NewTest {
public static void main(String[] args) { // File f=new File("com\\manual\\Data");
String path = System.getProperty("user.dir");
System.out.println("path :" + path);
File f = new File(path + "\\j2src\\com\\manual\\Data"); String names[] = f.list();
// 利用内部类进行排序
Arrays.sort(names, new Comparator<String>() {
public int compare(String o1, String o2) {
//String s1 = (String) o1;
//String s2 = (String) o2;
return o1.toLowerCase().compareTo(o2.toLowerCase());
}
});
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
}
}
import java.util.Collection;
import java.util.Iterator;
import java.util.TreeMap;public class TestOrder { /**
* @param args
*/
public static void main(String[] args)
{
String path = System.getProperty("user.dir");
System.out.println("path :" + path);
File f = new File(path); String names[] = f.list();
TreeMap tm=new TreeMap();
for (int i = 0; i < names.length; i++)
{
//System.out.println(names[i]);
tm.put(names[i],names[i]);
}
Collection col = tm.keySet();
Iterator it = col.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}}