К вашему сведению: Обратите внимание, что использованный метод read()
возвращает byte
, а не char
, поэтому вызов write((char) c)
должен был быть просто write(c)
.
Для параллельной записи в несколько файлов при копировании файла вы создаете массив выходных потоков для файлов назначения, а затем выполняете итерацию массива, чтобы записать данные во все из них.
Для лучшей производительности вы всегда должны делать это, используя буфер. Запись одного байта за раз не будет хорошо работать.
public static void copyToMultipleFiles(String inFile, String... outFiles) throws IOException {
OutputStream[] outStreams = new OutputStream[outFiles.length];
try {
for (int i = 0; i < outFiles.length; i++)
outStreams[i] = new FileOutputStream(outFiles[i]);
try (InputStream inStream = new FileInputStream(inFile)) {
byte[] buf = new byte[16384];
for (int len; (len = inStream.read(buf)) > 0; )
for (OutputStream outStream : outStreams)
outStream.write(buf, 0, len);
}
} finally {
for (OutputStream outStream : outStreams)
if (outStream != null)
outStream.close();
}
}