2016-01-13 3 views
1

Я хочу прочитать несколько файлов из нескольких каталогов. Пока моя программа может читать несколько файлов только до определенного предела.Файл [] не может обрабатывать несколько файлов

public void filesTobeCollected(String validpath) throws Exception { 
    this.folder = new File(validpath); 
    // this.file = new ArrayList<>(); 
    File[] fileEntry = folder.listFiles(); 
    System.out.println("directory path" + fileEntry.length); 

    /*****File upload read****/ 

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

     /*this line weeds out other directories/folders*/ 
     if (fileEntry[i].exists()) { 

      file.add(String.valueOf(fileEntry[i])); 
      } 
     } 
    } 

и я посылаю значение каталогов через эту функцию,

public List<String> filesTobeTested(ArrayList<String> file) throws 
    Exception { 
    Set<String> test = new HashSet<>(); 
    test.add("src/test/resources/gfd"); 
    test.add("src/test/resources/rds"); 
    test.add("src/test/resources/oiu"); 
    //test.add("src/test/resources/pol"); 

    System.out.println("directory path 2" + test); 

    for (int i = 0; i < 1; i++) { 

     for (Iterator<String> it = test.iterator(); it.hasNext();) { 
      String f = it.next(); 
      filesTobeCollected(f); 
      System.out.println("Found" + f); 
     } 

Здесь File [] FileEntry, кажется, есть некоторый предел, как я нажимаю больше каталогов с помощью test.add ("SRC/тест/ресурсы/obj ") Файл [] fileEntry не может обрабатывать больше файлов. Есть ли альтернатива File [] fileEntry для неограниченного или неизвестного количества файлов?

+2

У вас возникли какие-либо исключения? – Adi

+2

Почему у вас есть 'for (int i = 0; i <1; i ++) {'? Этот цикл for выполняется ровно один раз; вы можете просто удалить его. –

+1

'Есть ли альтернатива файлу [] fileEntry без неограниченного или неизвестного количества файлов?' - обычно вы должны использовать someting как 'ArrayList' вместо необработанных массивов, но это не проблема здесь, так как' listFiles(); 'уже выделяет массив с соответствующим размером. Пожалуйста, опубликуйте [mcve], чтобы мы могли воспроизвести проблему. –

ответ

3

Есть ли альтернатива для File[] fileEntry с неограниченным или неизвестным количеством файлов?

Да, используйте ArrayList<File>, который будет обрабатывать размер автоматически для вас.


Но это, кажется, не проблема, потому что вы знаете, все файлы, необходимые для работы в создании массива так что размер является точной File[] fileEntry = folder.listFiles();.

Удалить эту строку

for (int i = 0; i < 1; i++) { 

, который кажется useles ... Если проблема остается, разместить Ваш StackTrace

1

Как глубоко я узнал вас, вы хотите, чтобы собрать эти файлы в один.

В моем случае сначала я бы рекомендовал собрать файл (ы) путь или файл (ы) и добавить их в ArrayList<File>, вторичный читать эти файлы и собирать в ArrayList<byte[]>, позже, если вы хотите это сделать один файл, вы, конечно, можете использовать ObjectOutputStream класс писать ArrayList<byte[]>Object и, конечно, создать единый File

в течение этого Заботьтесь о файле чтения & записи байтов размеры не пересекает вашу границу Space Java Heap.

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