Быстрый copy file
- public void copy(File src, File dst) throws IOException {
- if (dst.exists()) {
- dst.delete();
- dst.createNewFile();
- }
- FileInputStream inStream = new FileInputStream(src);
- FileOutputStream outStream = new FileOutputStream(dst);
- FileChannel inChannel = inStream.getChannel();
- FileChannel outChannel = outStream.getChannel();
- inChannel.transferTo(0, inChannel.size(), outChannel);
- inStream.close();
- outStream.close();
- }
I/O операции как мы знаем всегда so slow. Особенно это касается копирования файлов, а уж если они большие (к примеру 2 Gb) то это вообще страх и ужас. Мы все знаем почему так происходит: запись всегда медленнее чтения, копирование обычно идет в цикле с небольшим буфером. Из этого вытакает очень низкая скорость выполнения: проверка при чтении, чтение в бучер, проверка при записи, запись буфера, инкремент (если есть). Вообщем говнокод ад тот еще.
Данное решение позволяет забыть нам о 10 минутном копировании альбома любимой музыки с одной папки в другую, используя NIO API. Все работает очень быстро и качественно. Да и код без циклов выглядит куда приятней. Пользуйтесь.
Данное решение позволяет забыть нам о 10 минутном копировании альбома любимой музыки с одной папки в другую, используя NIO API. Все работает очень быстро и качественно. Да и код без циклов выглядит куда приятней. Пользуйтесь.