внимание, спойлеры) решила задачу без буфера. подскажите, для чего он вообще в данном случае был нужен?
public class Solution {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in);
var inputStream = Files.newInputStream(Paths.get(scanner.nextLine()));
var outputStream = Files.newOutputStream(Paths.get(scanner.nextLine()))
) {
int size = 1024;
byte[] buffer = new byte[size];
while (inputStream.available() > 0) {
int read = inputStream.read();
outputStream.write(read);
}
} catch (Exception e) {
System.out.println("Something went wrong : " + e);
}
}
}
Валерия
26 уровень
не пон для чего в данном случае буфер
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Enterprise Java Developer
27 ноября, 21:01
Все как Гофф говорит, операции ввода-вывода не бесплатные и ресурсоёмкие. Сейчас пример не очень актуальный, но вот представь что тебе для чтения или записи каждого байта нужно перегонять головку диска в нужное расположение... наверное это не очень продуктивно... и напротив, если вычитывать данные подряд пачками, действий потребуется явно меньше....
+1
ГоффMaster
27 ноября, 20:31
Буфер ускоряет работу в стопицот раз. Побайтовое чтение файлов происходит очень медленно.
Можно и без него, будет работать, в данном случае даже разницы наверное на глаз не заметить, но на реальных, даже небольших файлах в десяток килобайт она заметна.
+2
ГоффMaster
27 ноября, 20:57
Вот, нашёл, я когда-то замерял как влияет размер буфера на скорость именно этой задачи:
Файл был примерно 10 Мб. Чтение+запись занимает без буфера 47 секунд, с буфером в 1 килобайт - 0,08 секунд.
+2