2016-05-17 8 views
-1

私は約2000枚の写真が入ったフォルダを用意しています。すべてが奇妙な名前で、すべてをループして、名前を「何か」+名前に変更しますループ)。あなたが名前ではなくディレクトリ内の場所だけを知っているときは、ファイルの名前を変更することはありますか?私は主な問題は、ディレクトリのインデックスxでファイルの名前を取得していると思いますが、これを行うためにとにかくありますか?あいまいなファイルの名前を変更するJava

public class stuff { 
    static ArrayList<File> images = new ArrayList<>(); 

    public static void main(String[] args) throws IOException{ 
    Files.walk(Paths.get("C:\\Users\\Seth Gower\\Pictures\\Stuff for imgur\\iFunny Dumps\\iFunny Dump (All)")) 
     .forEach(filePath -> { 
     if (Files.isRegularFile(filePath)) { 
      images.add(new File(filePath.toString())); 
     } 
     }); 
    for(File x : images) 
     System.out.println(x.getName()); 

    for (int i = 0; i < images.size(); i ++){ 
     System.out.println(images.get(i).renameTo(new File(
      "C:\\Users\\Seth Gower\\Pictures\\Stuff for imgur\\iFunny Dumps\\iFunny Dump (All)" + "\\" + "ifunnyDump" + i))); 
    } 
    } 
} 
+2

のおかげではい、あります。これまでにどのようなコードを試しましたか? – hexafraction

+0

すべてのファイルをArrayListに追加して名前を変更し、名前が変更されたフォルダ内の既存のファイルをすべて上書きしますが、それは非常に不便です –

+0

ArrayListを同じあなたのオペレーティングシステムのファイルマネージャーとして並べ替えて、そのarraylistのn番目のファイルの名前を変更するだけですか? – hexafraction

答えて

2
static ArrayList<File> images = new ArrayList<>(); 

public static void main(String[] args) throws IOException{ 
    Files.walk(Paths.get("path")).forEach(filePath -> { 
     if (Files.isRegularFile(filePath)) { 
      images.add(new File(filePath.toString())); 
     } 
    }); 
    for (int i = 0; i < images.size(); i ++){ 
     images.get(i).renameTo(new File("path" + "\\" + "text" + i + ".jpg")); 
    } 


} 

とディレクトリであるかどうかをチェックすることができますループの前にしたい場合は、@hexafractionと@MatthewStrawbridge

+1

良いかもしれない、それはjpgにpngファイルの名前を変更する可能性があります。 – Bill

+0

これは非常に非効率的です。それはうまくいくかもしれませんが、実際には、各ファイルをループしてarraylistに追加し、javaがファイル名をネイティブで読み書きできるようにするときに、そのarraylistをループして不必要にメモリを使い切るのは悪い習慣です。 – sbowde4

+1

@ sbowde4例のコード、または数ギガバイトのRAMを搭載したコンピュータ上の数千のファイルの1つのショットコード。大丈夫だよ。著者はメモリ効率についての主張をしていません。 – Bill

0

これは、あなたが今、あなたは、ディレクトリ内のすべてのファイルをループする必要AN名前を変更し、最初にファイルが

File dir = new File("C:\\yourdirectory"); 

に配置されているディレクトリを見つける必要があり

本当に簡単です。各ループのAが最適です。あなたは指定されたディレクトリが、本当にこれが働い if (dir.isDirectory())

int i = 0; 
for (File f : dir.listFiles()) { 
    try { 
     f.renameTo("YourText_"+i+".jpg"); 
     i++; 
    } 
    catch (Exception e) 
    { 
     System.out.println(e); 
    } 

} 
+0

拡張子がなくなるのであまり良くありません。 – Bill

+0

f.renameTo( "YourText _" + i + "。jpg"); ' – sbowde4

+0

ありがとう、私は答えとして他の1つだけをマークしたので、それを追加するのを忘れました。それは私が使ったものです(それは私自身の答えなので)。でも、あなたのことはよく見えます。 –

関連する問題