该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我想按时间倒序命名文件夹下的文件
(其实是我想自己动手写代码代替人工为我的漫画收藏重命名),遇到一些问题,望多指教。
下面是我的代码:
import java.util.*;
import java.io.*;
public class Main
{
public static void main(String[] args)
{
File f = new File("/storage/emulated/0/tieba");
HashMap h = new HashMap(100,0.99f);
for(int i = 0;i < f.listFiles().length;i++)//装载文件
{
System.out.println("//----------for1----------//");
System.out.println("for1:i = "+i);
h.put(i,f.listFiles()[i]);
System.out.println("//----------for1----------//");
}
System.out.println("h.size() = "+h.size());
for(int i = 0;i < h.size();i++)// 找出时间最早文件最先重命名
{
System.out.println("//----------for2----------//");
System.out.println("for2:i = "+i);
long[] time = new long[h.size()];
for(int i1 = 0;i1 < h.size();i1++)// 找出时间最早文件
{
System.out.println("//-----for3-----//");
System.out.println("for3:i1 = "+i1);
try
{
time[i1] = h.get(i1).lastModified();
}
catch(NullPointerException e)
{
System.out.println("h["+i1+"] is null!");
}
System.out.println("//-----for3-----//");
}
System.out.println("Renaming...");//重命名
System.out.println("h.size() = "+h.size());
int temp = getTheSmallestAt(time);
System.out.println("temp = "+temp);
h.get(temp).renameTo(new File("/storage/emulated/0/tieba/"+addZero((byte)i)+".jpg"));
h.remove(temp);
System.out.println("//----------for2----------//");
}
}
public static int getTheSmallestAt(long[] array)//排序辅助方法
{
int theSmallestAt = 0;
for(int i = 0;i < array.length;i++)
{
System.out.println("array["+i+"] = "+array[i]);
if((array[i] != 0)&(array[theSmallestAt] > array[i]))
{
theSmallestAt = i;
}
}
return theSmallestAt;
}
public static String addZero(byte number)//获取文件名数字字符串
{
return (number<10)?("0"+String.valueOf(number)):(String.valueOf(number));
}
}
多有不足,望大神们帮忙指出错误及修改方法