2016-05-17 2 views
-1

Итак, у меня есть папка с около 2000 картинками, все со странными именами, я хотел бы пропустить все это и переименовать их в «что-то» + число (i в петля). Нужно ли вообще переименовать файл, когда вы знаете только место в каталоге, а не имя. Я думаю, главная проблема заключается в том, чтобы получить имя файла по индексу 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 в том же сортировать в качестве диспетчера файлов операционной системы, а затем просто переименовать n-й файл в этом arraylist? – 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

Может быть, лучше, это может привести к переименованию png-файлов в jpg. – Bill

+0

Это крайне неэффективно.Это может сработать, но очень плохо использовать ненужную память, перебирая каждый файл до одного раза, чтобы добавить его в arraylist, а затем перейдя через этот arraylist, чтобы переименовать их, когда java имеет возможность читать/записывать имена файлов изначально. – sbowde4

+1

@ sbowde4 В качестве примера кода или одного кода-выстрела для нескольких тысяч файлов на компьютере с гигабайтами ОЗУ. Все нормально. Автор не претендовал на эффективность использования памяти. – Bill

0

Это действительно просто

вам нужно сначала найти каталог файлы расположены в

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

теперь вам нужно перебрать каждый файл в каталоге переименовать его. А для каждого цикла было бы лучше. Если вы хотите до цикла вы можете проверить, если каталог, указанный действительно каталог с 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

спасибо, я только отметил другой в качестве ответа, потому что это тот, который я использовал (так как это мой собственный ответ), но ваш тоже кажется хорошим. –

Смежные вопросы