社区
Java SE
帖子详情
Java 下如何依次读取一个目录下的所有文件
mcolinc
2010-03-04 02:18:23
我在一个路径下有1000个文件
依次为1,2,3,4,5...........1000
我是用了
File f = new File(path);
File[] t = f.listFiles(); 这个方法来读取这个路径下的文件
但是最后结果顺序为
1,10,100,1000,101...
我怎么做才能让它读取的顺序为1,2,3......1000?
...全文
93
2
打赏
收藏
Java 下如何依次读取一个目录下的所有文件
我在一个路径下有1000个文件 依次为1,2,3,4,5...........1000 我是用了 File f = new File(path); File[] t = f.listFiles(); 这个方法来读取这个路径下的文件 但是最后结果顺序为 1,10,100,1000,101... 我怎么做才能让它读取的顺序为1,2,3......1000?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
JavaAlpha
2010-03-04
打赏
举报
回复
lz可以参考
http://topic.csdn.net/t/20030108/10/1337549.html
-
jxlstc
2010-03-04
打赏
举报
回复
错误原因分析:
File[] t = f.listFiles();//创建数组,未排序
String[] strArray = {"11","1","2","12"};
Arrays.sort(strArray);//调用此方法,实现默认排序
for(int i=0;i<strArray.length;i++){
System.out.println(strArray[i]); //1 11 12 2
}
说明:字符串排序是按首字母比较第一位,相同再比较第二位,依次类推,所以产生了一述结果
那么如何才能改变默认排序呢?
public class StringComparetor implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
int i1 = Integer.parseInt(o1);
int i2 = Integer.parseInt(o2);
if(i1>i2){
return 1;
}else if(i1<i2){
return -1;
}
return 0;
}
}
说明:定义一个实现了Comparator接口的类,它是对排序规则的定义,具体应用规则到网上去查一下就可以了,很多的
String[] strArray = {"11","1","2","12"};
Arrays.sort(strArray,new StringComparetor());//自定义排序
for(int i=0;i<strArray.length;i++){
System.out.println(strArray[i]);//1 2 11 22
}
得到了我们想要的结果,针对于你的问题,我写的一个实例,你直接贴到你的代码中就可以用了:
import java.io.File;
import java.util.Comparator;
public class FileComparator implements Comparator<File> {
@Override
public int compare(File file01, File file02) {
System.out.println();
int file01name = Integer.parseInt(file01.getName().substring(0,file01.getName().indexOf('.')));
int file02name = Integer.parseInt(file02.getName().substring(0,file02.getName().indexOf('.')));
if(file01name>file02name){
return 1;
}else if(file02name<file02name){
return -1;
}
return 0;
}
}
import java.io.File;
import java.util.Arrays;
public class SortTest {
public static void main(String[] args){
File file = new File("f:/test");
File[] files = file.listFiles();
Arrays.sort(files,new FileComparator());
for(int i=0;i<files.length;i++){
System.out.println(files[i].getName());
}
}
}
相关推荐
JAVA
上传下载
JAVA
代码
Java
.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
Java
.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。
一个
流可以理解为
一个
数据的序列。输入流表示从
一个
源
读取
数据,输出流表示向
一个
目标写数据。
Java
为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到
文件
传输和网络编程中。但本节讲述最基本的和流与 I/O 相关的功能。我们将通过
一个
个例子来学习这些功能。
VC/MFC 下 递归遍历
目录
下的所有子
目录
及
文件
在MFC下要实现
文件
夹的递归遍历,可用CFileFind类,
依次
读取
文件
夹下的子
文件
夹和
文件
,并判断通过判断是
文件
夹还是
文件
来决定递归遍历。递归遍历代码如下: /************************************************************************/ /* 遍历打包
目录
下的所有
文件
...
Java
读取
某个
目录
下所有
文件
、
文件
夹
1 /** 2 * @Author: 3 * @Description:获取某个
目录
下所有直接下级
文件
,不包括
目录
下的子
目录
的下的
文件
,所以不用递归获取 4 * @Date: 5 */ 6 public static List<String> getFiles(String path) { 7 ...
Java
API
读取
HDFS
目录
下的所有
文件
Java
API
读取
HDFS
目录
下的所有
文件
Storage存储对象详解(
Java
Script存储对象,HTML5 Web 存储)
主要讲解localStorage保存数据、
读取
数据、删除单个数据、删除所有数据的使用保存数据:localStorage.setItem(key,value);
读取
数据:localStorage.getItem(key);删除单个数据:localStorage.removeItem(key);删除所有数据:localStorage.clear();
Java SE
62,566
社区成员
307,520
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告