Java использует поток IO, чтобы реализовать сегментацию и слияние больших файлов
Сегментация файла должна быть более практичной функцией. Например, если у вас есть файл 3G, который необходимо скопировать с одного компьютера на другой, но ваше устройство хранения (например, SD -карта) составляет всего 1G. В настоящее время вы можете сократить файл на 3 1G -файлы, скопировать их отдельно и, наконец, объединить три файла, которые решают проблему. Например, у вас есть файл из сотен M для загрузки в FTP, но этот FTP ограничивает ваш единственный файл не превышать 10 м. В настоящее время вы также можете использовать сегментацию файлов для решения проблемы. Поскольку он разделен, нам нужно слиться, когда мы используем его снова. Сегодня мы будем реализовать возможность расщепления и слияния файлов через код Java.
Теперь мы продемонстрируем, демонстрируя файл с моей машины. Файл-каталог: E:/Eclipse-Jee-Juno-Win32.zip (сегодня я буду веселиться с затмением, которое все ненавидят):
На следующем рисунке показана ситуация перед сегментацией:
Ситуация после деления:
Как разделить файлы на Java:
// Метод расщепления файлов (пройти путь к разделению файла, и количество копий, которые будут разделены в методе) Частный статический void splitfiledemo (файл src, int m) {if (src.isfile ()) {// Получить общую длину файла long l = src.length (); // Получить имя файла string fileName = src.getName (). Substring (0, src.getName (). Indexof (".")); // Получить файл суффикс string endname = src.getName (). Substring (src.getName (). AstinDexof (".")); System.out.println (EndName); InputStream in = null; try {in = new FileInputStream (src); for (int i = 1; i <= m; i ++) {stringBuffer sb = new StringBuffer (); sb.append (src.getparent ()). Append (filename) .append ("_ Data"). Append (i) .append (EndName); System.out.println (sb.toString ()); Файл файла2 = новый файл (sb.tostring ()); // Создать выходной поток для написания файлов outputstream out = new FileOutputStream (file2); int len = -1; байт [] байты = новый байт [10*1024*1024]; while ((len = in.read (bytes))! =-1) {out.write (bytes, 0, len); if (file2.length ()> (l / m)) {break; }} out.close (); }} catch (Exception e) {e.printstackTrace (); } наконец {try {in.close (); } catch (ioException e) {e.printstackTrace (); }}}} Файлы слияния Java:
// Метод слияния файлов (пройти в путе файла в слияние) Private static void joinfileDemo (string ... src) {for (int i = 0; i <src.length; i ++) {file file = new File (src [i]); String fileName = file.getName (). Substring (0, file.getName (). Indexof ("_")); String endName = file.getName (). Substring (file.getName (). AstinDexof (".")); StringBuffer sb = new StringBuffer (); SB.Append (file.getParent ()). Append ("//"). Append (filename) .append (endname); System.out.println (sb.toString ()); try {// Читать поток ввода малых файлов inputstream in = new FileInputStream (file); // записать выходной поток File File File2 = новый файл (sb.tostring ()); OutputStream out = new FileOutputStream (file2, true); int len = -1; байт [] байты = новый байт [10*1024*1024]; while ((len = in.read (bytes))! =-1) {out.write (bytes, 0, len); } out.close (); in.close (); } catch (Exception e) {e.printstackTrace (); }} System.out.println ("Merge File завершено!");}Я думал, что это было довольно сложно перед написанием, но после написания, я подумал, что это было только это. Вы можете практиковать свои навыки.
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!