java中如何按照顺序获取文件夹内的文件名

发布于 2021-12-04 04:38:17 字数 749 浏览 842 评论 5

如何按照顺序读取文件夹内的文件名:

如输出(1.jpg、2.jpg、3.jpg、10.jpg、11.jpg、20.jpg、21.jpg、31.jpg) 


      // 图片 文件夹
		File imgFile = new File(imgFilePath);
			
		// 图片文件夹路径不存在,则创建
		if (!imgFile.exists()) {
			imgFile.mkdirs();
		}else {
			// 存在图片,则直接获取
			String[] list = imgFile.list(); //获取文件夹内的所有文件名
			if(list != null){
					
				//深拷贝  //浅拷贝 Arrays.asList(list)
				for (String name : list) {
					imgURList.add(name); //把文件名放入list里面
				}
					
				// 对 list 排序
				Collections.sort(imgURList);

				
			}
			

// 对 list 排序 Collections.sort(imgURList);

但是输出的是:(1.jpg、10.jpg、11.jpg、2.jpg、20.jpg、21.jpg、3.jpg、31.jpg)

不是我想要的按数字大小来排序的

 

请教大神们,谁做过没有呢??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

本宫微胖 2021-12-06 10:01:11

            

                    
                    // 对 list 排序
                    Collections.sort(imgURList,new Comparator<String>(){

                        @Override
                        public int compare(String o1, String o2) {
                            

                            // 获取 文件名 去掉后面的后缀
                            String nameA = o1.split("\.");
                            String nameB = o2.split("\.");
                            

                            // 获取文件名的数值
                            int intA = Integer.parseInt(nameA);
                            int intB = Integer.parseInt(nameB);
                            
                            return intA-intB;
                        }
                        
                    });

 

泪冰清 2021-12-06 09:07:43

具体如何实现呢 Comparator这个如何写呢?

无人问我粥可暖 2021-12-06 07:28:01

用Collections.sort(list,Comparator);来排。

伴我心暖 2021-12-06 06:08:47
public class Test {

    public static void main(String[] args) {

        List<File> imgURList = Arrays.asList(new File("D://img").listFiles());

        Collections.sort(imgURList, new Comparator< File>() {
            @Override
            public int compare(File o1, File o2) {
                if (o1.isDirectory() && o2.isFile())
                    return -1;
                if (o1.isFile() && o2.isDirectory())
                    return 1;

                return getFileName(o1.getName())-getFileName(o2.getName());
            }
        });

        System.out.println(imgURList);
    }

    private static int getFileName(String fileName){
        String temp[] = fileName.split("\\");
        return Integer.parseInt(temp[temp.length-1].split("\.")[0]);
    }

}

 

结果:[D:img1.png, D:img2.png, D:img10.png, D:img11.png, D:img20.png]

伪装你 2021-12-05 17:50:25

自己再写个严谨些的吧。

Comparator<String> comparator = new Comparator<Integer>() {
    public int compare(String o1, String o2) {
        Integer i1 = Integer.parseInt(o1);
        Integer i2 = Integer.parseInt(o2);
        return i1 > i2 ? 1 : -1;
    }
};

 

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文