2012-01-25 2 views
0

Я хотел бы знать, можно ли применить функцию ко всем файлам в каталоге с помощью Java?Java - применить функцию ко всем файлам в указанном каталоге

Более конкретно, я ищу, чтобы читать все изображения в папке, преобразовывать их в двоичные (два цвета/черно-белые), а затем сохранять двоичное изображение как новое изображение в другом каталоге (возможно, directory\binary, для пример).

Что-то вроде этого:

for(all images in folder) 
    read in image 
    make(binaryImg) 
    saveNewImage 
endFor 

У меня есть 300 изображений, так надеялся, что есть способ сделать это?

Большое спасибо.

+1

Попробуйте 'for (Файл f: folder.listFiles()) выполнитьOperations (f);' – fireshadow52

ответ

1

Вы можете сделать это следующим образом:

File dir = new File("/dir/"); 
for(File f : dir.listFiles()) 
    processImage(f); 

Конечно, поскольку у вас есть много файлов, вы можете создать Runnable для каждого файла и передать их в ExecutorService обрабатывать в несколько потоков:

public static void main(String... args){ 

    ExecutorService pool = Executors.newFixedThreadPool(4); //nbr of active threads 

    File dir = new File("/dir/"); 
    for(File f : dir.listFiles()) 
    pool.submit(new Runnable() { 
     public void run(){ 
      processImage(f); 
     } 
    } 
} 
1

Это должно быть относительно легко сделать, и здесь есть много сообщений, которые касаются многих частей этой программы. Например, проверить эти предыдущие вопросы:

Program to get all files within a directory in Java

Taking a picture as input, Make grey scale and & then outputting

Там должно быть более чем достаточно информации для вас, чтобы сделать старт!

0

Да, это возможно. Взгляните на java.io.File и попробуйте найти темы о работе с файлами в Java для получения информации о том, как перейти к каталогу и получить список файлов, которые он содержит.

Если вы ищете кого-нибудь, чтобы написать код для вас, это вряд ли произойдет.

0

Единственный «лучший способ», о котором я могу думать, - использовать здесь многопоточную конструкцию. Каждые 100 изображений, например, все должны обрабатываться в отдельном потоке.