打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
文件名加前缀(001_)文件按文件名排列

package com.file;

import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

 

/**
 *  FileRename.java
 *  @Author      hasau  
 *  @Email       hasau@163.com
 *  @CreateTime  2012-1-4  下午7:57:17 
 **/
public class FileRename {
 
 
  public static void main(String[] args) {
   String name = "E:/picture";
   doSome(name,5);
  }
 
 
  /**
  * @param name   目标文件的目录名
  * @param num    文件名前缀:几位  001_abc.jpg 3为
  */
 private static void doSome(String name,int num){   
   File file = new File(name);   
   File[] files = file.listFiles(ff);   
   File[] dirs = file.listFiles(dir);
   for(File f : dirs){
    doSome(f.getAbsolutePath(),num);
   }   
   
   List<File> list = Arrays.asList(files);
   sortAsName(list); 
   
   handleFiles(list,num);
  }


 /**
  * @param files  文件集合
  * @param loap   文件名前缀:几位
  */
 private static void handleFiles(List<File> files,int loap) {
  String prefix=null;
  String fname = null;
  String path = null;
  int count = 0; 
  for(File f : files){   
   prefix = null;
   fname = null;
   path = null;
   
   count++;
   prefix=count+"";
   int l = prefix.length();
   if(l<loap){
    for(int j=0;j<loap-l;j++){
     prefix = "0"+ prefix;
    }
   }
   fname = f.getName();
   path = f.getAbsolutePath();
 
   int i = path.lastIndexOf(fname);
   path = path.substring(0, i)+prefix+"_"+fname;
   
   boolean flag = f.renameTo(new File (path));
   if(flag){    
    System.out.println(f.getAbsolutePath());
    System.out.print("____"+f.length());
   }
  }
 }
 
    
 private static FileFilter ff = new FileFilter() { 
  public boolean accept(File f) {
   if(f.isFile()){
    return true;
   }
   return false;
  }
 };
 
 private static FileFilter dir = new FileFilter() {  
  public boolean accept(File f) {
   if(f.isDirectory()){
    return true;
   }
   return false;
  }
 };
 
 /**
  *  文件名排序   上未测试
  * */
 private static void sortAsName(List<File> files) {
  if(files.isEmpty())  return;
  Collections.sort(files, new Comparator<File>() {
   public int compare(File o1, File o2) {
    if (o1.isDirectory() && o2.isFile())
     return -1;
    if (o1.isFile() && o2.isDirectory())
     return 1;
    return o1.getName().compareTo(o2.getName());
   }
  });
 }
 
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
c/c++ 获取当前程序(EXE)所在的路径
C/C++获取文件后缀名并且比较
[精]采用dwrajax和struts开发文件上传进度条
struts上传和下载2个action
项目经验分享——Java常用工具类集合
JFinal文件上传、下载、删除、修改文件名
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服