Что является лучшим вариантом (с точки зрения производительности): копирование файла с использованием fileinputstream и fileoutputstream или запуск команды копирования команд конкретной ОС на Java?Копирование файлов в Java
ответ
Я уверен, что использование команды копирования конкретной ОС будет быстрее или, по крайней мере, так же быстро, как простое самозаписываемое решение. Конкретная команда ОС, вероятно, использует разумный размер буфера и другие оптимизации, которые вам в противном случае пришлось бы выяснить сами.
Edit:
х-х правильно, вы не должны вызвать команду копирования непосредственно. Я думал, что у Java уже есть метод копирования, например File.copy() или что-то еще, но я ничего не мог найти, даже в JDIC. Таким образом, Apo Commons IO - это, вероятно, путь.
Используйте библиотеку excelent commons-io, она имеет method, которая будет делать именно это. Он очень широко используется и, конечно же, очень оптимизирован.
Загрузить его с here или скопировать POM dependency в файл pom.xml при использовании maven.
Не копируйте с конкретной копией ОС, она не будет переносимой. Использование не-java-кода из java, будь то с JNI или нерестом внешней команды, является головной болью и кошмаром для обслуживания.
Сделайте это на Java.
Одна из проблем с запуском команды ОС заключается в том, что вам необходимо создать полный процесс на уровне ядра ОС, и это тяжелая операция. Есть большие фиксированные накладные расходы, которые будут особенно серьезными для небольших файлов.
Другая проблема заключается в том, что она добавляет системную зависимость без уважительной причины.
Зависит от того, что вы будете делать в случае возникновения ошибок. Часто собственная команда лучше способна обрабатывать ситуации с ошибками, но вам может быть трудно заставить ее взаимодействовать с пользователем.
Чистое Java-решение (помимо кросс-платформы) позволяет вам полностью контролировать - я бы предложил использовать библиотеку для обработки беспорядочных деталей и ситуаций с ошибками.
- 1. Копирование файлов с Java
- 2. Неполное копирование файлов Java NIO
- 3. java копирование ввода в несколько выходных файлов
- 4. Копирование файлов с файловыми замками в Java
- 5. Копирование/вставка/дублирование java-файлов в Eclipse
- 6. Копирование файлов в Java с помощью JNI
- 7. Копирование файлов в Java (не работает)
- 8. Копирование файлов VS не копирование файлов?
- 9. Копирование файлов в нескольких местах
- 10. копирование java-файлов, исключая уже скопированные файлы
- 11. копирование файлов в SML
- 12. Копирование файлов в bash
- 13. Копирование файлов в SAS
- 14. Копирование файлов в Xcode
- 15. Копирование файлов в NSIS
- 16. Java 6 Копирование файлов с Readline
- 17. Запланированное резервное копирование файлов файлов
- 18. Копирование файлов с использованием SBT
- 19. Копирование файлов из одного каталога в другой в Java
- 20. Копирование и объединение двух файлов
- 21. Копирование списка файлов в каталог
- 22. Копирование выбранных файлов в python
- 23. Копирование файлов в python 2.7
- 24. Копирование много файлов в Delphi
- 25. Копирование файлов ROOTDIR в Gradle
- 26. Рекурсивное копирование файлов в подкаталог
- 27. Копирование нескольких файлов в C
- 28. Копирование файлов содержимого в GruntJS?
- 29. Копирование файлов активов в/Debug
- 30. Копирование файлов `* XXX *` в `* YYY *`
Предполагая, что переносимость здесь не является основной проблемой, основной вариант использования такого метода будет включать в себя копирование многих файлов как часть обработки запроса, и, следовательно, производительность является очень беспроблемным критерием. – jjoshi
, даже если производительность является важным критерием, узким местом будет диск, а не процессор, поэтому не важно, на каком языке вы это делаете. – flybywire
Библиотека, чтобы сделать копию файла !!! Это немного за борт для примерно 5 строк кода, не так ли? Или он использует некоторые тайные одновременные вызовы чтения/записи Java для максимальной пропускной способности? –