2010-04-27 8 views
11

मेरे पास निर्देशिका में 500 पीडीएफ फाइलें हैं। मैं एक फ़ाइल नाम के पहले पांच अक्षरों को हटाना चाहता हूं और इसका नाम बदलना चाहता हूं।जावा में फ़ाइल का नाम बदलने का सबसे अच्छा तरीका, निर्देशिका में लगभग 500 फाइलें हैं

+8

सबसे अच्छा तरीका यह है, लेकिन पार्टी या एक पटकथा भाषा के लिए जावा का उपयोग नहीं करने के लिए किया जाएगा। –

+1

यह इस उद्देश्य को हल करेगा ... कोई जावा बीटीडब्ल्यू ...................... डीआईआर/बी> फ़ाइल सूची।txt /f "tokens = 1,2,3"% i (fileList.txt) में "% i% j% l"% l – Narayan

उत्तर

3

निर्देशिका में फ़ाइलों को सूचीबद्ध करने के लिए File.listFiles(...) का उपयोग करें, String.substring(...) नया फ़ाइल नाम बनाने के लिए, और File.rename(...) नाम बदलने के लिए।

लेकिन मेरा सुझाव है कि आपके पास आवेदन है कि आप नाम बदलने से पहले सभी फ़ाइलों को किसी भी टकराव के बिना पर पुनर्नामित कर सकते हैं।

लेकिन @ पास्कल की टिप्पणी स्पॉट पर है। जावा इस तरह की चीज करने के लिए सबसे आसान उपकरण नहीं है।

1

जावा इस तरह के काम के लिए एक खराब विकल्प है। ग्रोवी जैसे एक जेवीएम स्क्रिप्टिंग भाषा एक बेहतर विकल्प होगा। यदि आप इस विकल्प का पीछा करने के

चरण 1 चाहते हैं:

डाउनलोड करें और ग्रूवी स्थापित

चरण 2:

प्रारंभ ग्रूवी सांत्वना

चरण 3:

भागो इस स्क्रिप्ट

def dirName = "/path/to/pdf/dir" 

new File(dirName).eachFile() { file -> 
    def newName = file.getName()[5..-1] 
    File renamedFile = new File(dirName + "/" + newName) 
    file.renameTo(renamedFile) 

    println file.getName() + " -> " + renamedFile.getName() 
}  

मैं यहाँ यह सोचते हैं रहा है कि सभी फाइलों निर्देशिका /path/to/pdf/dir में हैं। अगर उनमें से कुछ इस निर्देशिका की उपनिर्देशिका में हैं, तो File.eachFile के बजाय File.eachFileRecurse का उपयोग करें।

+0

+1 क्योंकि मुझे नहीं लगता कि यह उत्तर 3 डाउनवॉट्स के लिए योग्य है, खासकर बिना किसी स्पष्टीकरण के। –

+0

क्या आप कृपया अपना दृष्टिकोण सही कर सकते हैं? यह वास्तव में उस चीज़ पर निर्भर करता है जिसे वह ढूंढ रहा है। अगर वह एक जीयूआई आधारित आवेदन चाहता है, तो जावा ठीक रहेगा। – captainspi

+1

@SPI मैं मान रहा हूं (शायद गलत तरीके से) कि यह एक बार बंद कार्य –

0

यदि आप विंडोज़ पर हैं तो आपको कमांड प्रॉम्प्ट या .bat फ़ाइल का उपयोग करना चाहिए। विंडोज ओएस स्तर पर मूल रूप से वाइल्डकार्ड नामों का समर्थन करता है, इसलिए यह जावा की तुलना में तीव्रता के आदेश होंगे, जो सभी नामों को फिर से शुरू करना होगा और प्रत्येक के लिए नाम बदलें नाम जारी करना होगा।

17

किसी दिए गए निर्देशिका में फ़ाइलों की सूची का नाम बदलने के लिए नमूना कोड। नीचे दिए गए उदाहरण में, c:\Projects\sample फ़ोल्डर है, फ़ाइलें जो कि के अंतर्गत सूचीबद्ध हैं 0.txt, 1.txt, 2.txt, आदि

मुझे आशा है कि यह आपकी समस्या का समाधान होगा करने के लिए नाम दिया गया है

import java.io.File; 
import java.io.IOException; 

public class FileOps { 


    public static void main(String[] argv) throws IOException { 

     File folder = new File("\\Projects\\sample"); 
     File[] listOfFiles = folder.listFiles(); 

     for (int i = 0; i < listOfFiles.length; i++) { 

      if (listOfFiles[i].isFile()) { 

       File f = new File("c:\\Projects\\sample\\"+listOfFiles[i].getName()); 

       f.renameTo(new File("c:\\Projects\\sample\\"+i+".txt")); 
      } 
     } 

     System.out.println("conversion is done"); 
    } 
} 
12

कुछ इस तरह करना चाहिए (Windows संस्करण):

import java.io.*; 

public class RenameFile { 
    public static void main(String[] args) { 
     // change file names in 'Directory': 
     String absolutePath = "C:\\Dropbox\\java\\Directory"; 
     File dir = new File(absolutePath); 
     File[] filesInDir = dir.listFiles(); 
     int i = 0; 
     for(File file:filesInDir) { 
      i++; 
      String name = file.getName(); 
      String newName = "my_file_" + i + ".pdf"; 
      String newPath = absolutePath + "\\" + newName; 
      file.renameTo(new File(newPath)); 
      System.out.println(name + " changed to " + newName); 
     } 
    } // close main() 
} // close class 
0

आप MacOS एक्स पर हैं और आपके बाह्य ड्राइव से फ़ोल्डर और सबफ़ोल्डर के अंदर सभी फ़ाइलों का नाम बदलना चाहते हैं, तो नीचे दिए गए कोड काम करेगा:

public class FileOps { 

    public static void main(String[] argv) throws IOException { 
     String path = "/Volumes/FAT32/direito_administrativo/"; 
     File folder = new File(path); 
     changeFilesOfFolder(folder); 
    } 

    public static void changeFilesOfFolder(File folder) { 
     File[] listOfFiles = folder.listFiles(); 

     if (listOfFiles != null) { 
      int count = 1; 
      for (int i = 0; i < listOfFiles.length; i++) { 
       if (listOfFiles[i].isFile()) { 
        File f = new File(folder.getPath() + "/" + listOfFiles[i].getName()); 
        f.renameTo(new File(folder.getPath() + "/" + count + ".flv")); 
        count++;      
       } else if (listOfFiles[i].isDirectory()) { 
        changeFilesOfFolder(listOfFiles[i]); 
       } 
      } 
     } else { 
      System.out.println("Path without files"); 
     } 
    } 
} 
0

इस फ़ोल्डर वर्णित सभी फ़ाइल नाम बदल जाएगा:

for (int i = 0; i < folders.length; i++) { 
    File folder = new File("/home/praveenr/Desktop/TestImages/" + folders[i]); 
    File[] files2 = folder.listFiles(); 

    int count = 1; 
    for (int j = 0; j <files2.length; j++,count++) { 
     System.out.println("Old File Name:" + files2[j].getName()); 
     String newFileName = "/home/praveenr/Desktop/TestImages/" + folders[i]+"/file_"+count+"_original.jpg"; 
     System.out.println("New FileName:" + newFileName); 
     files2[j].renameTo(new File(newFileName)); 
    } 

}