2016-04-05 5 views
1

У меня есть много байт [] штук для записи в файл и эти куски своего рода большие, и я думаю, что байты становятся смешаны ...FileOutputStream ждать окончания написания

Есть ли какие-либо методы, чтобы ждать для .WRITE (байт []), чтобы закончить работу или другие способы решения этой проблемы? Когда я смотрю файл, первая половина в порядке, тогда, когда я начинаю писать вторую половину, некоторое время заканчивается первой половиной ... Байт-массив хорош, я тестировал их. Если вам нужно какое-либо объяснение кода, не стесняйтесь спрашивать.

try (FileOutputStream fos = new FileOutputStream(Main.newFile)) { 
     for (int y = 0; y < piecesCount; y++) { 
      if (this.myList[y] == 1) { 
       fos.write(this.piecesArray.get(y).piece); 
       fos.flush(); 
       System.out.println("Im writing " + y + " piece"); 
      } else { 
       y--; 
      } 
     } 
     fos.close(); 
    } catch (FileNotFoundException ex) { 
    } catch (IOException | InterruptedException ex) { 
    } 
+1

Вам не нужно fos.close(), когда вы используете попробовать с resourcesstatement – snovelli

+0

Хорошо, Спасибо за совет! – EasyCode

+0

Я думаю, вы говорите, что подозреваете, что вызовы 'fos.write' не происходят последовательно. Будьте уверены, они есть. И вы можете избавиться от вызова 'fos.flush()', это нецелесообразно, кроме как замедлить работу. – VGR

ответ

0

Ну, если piecesCount является long переменной int y может вытечь и начать wrtiting первой части массива.

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

piecesArray.get (у) .piece

+0

Нет, штукЧата целое число, и это никогда не превышает 1000, поэтому я не думаю, что он может переполнить – EasyCode

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