Este artículo describe las operaciones de corte y fusión de Java para implementar archivos grandes. Compártelo para su referencia, como sigue:
Aquí nos damos cuenta del corte y fusión de archivos grandes.
Cortado por el número especificado (como cortar un archivo en 10 copias) o cortar por el tamaño especificado (como el número máximo de cada copia no excede los 10 m). Ambos métodos están bien.
Aquí solo estoy escribiendo un código simple para ti:
paquete io2; import java.io.file; import java.io.fileInputStream; import java.io.filenotfoundexception; import java.io.fileOutputStream; import java.io.ioexception; import java.io.sequenceStream; java.util.enumeration; import javax.swing.jfilechooser; public class Files PlitDemo {/*** Realice el corte y la fusión de archivos grandes. Cortado por el número especificado (como cortar un archivo en 10 copias) o cortar por el tamaño especificado (como el número máximo de cada copia no excede los 10 m). Ambos métodos están bien. */public static void main (string [] args) {jfilechooser jfc = new jfilechooser (); // seleccione archivo en swing // seleccione archivo int result = jfc.showopendialog (null); // visual Jfilechooser.approve_option) {// seleccione Archivo // Cortar archivo de archivo = jfc.getSelectedFile (); // User Selected File Dest = New File (File.getParent (), "Sparfile"); CutingFile (File, Dest); // Cut Method // 2 Merge (cuando se ejecuta directamente los fragmentos de archivos que solo se cortaron) DepOR de String FileName. FileName); // fusion File}} catch (ioException e) {// tODO auto-generado catch blocke.printStackTrace ();}} private static void fusedemo (archivo dest, string fileName) lanza ioexception {// protección de robusness (usando el objeto de archivo para abrir el canal) if (! Dester.Exists ()) existir ");} // Use una matriz de archivos para cargar todos los archivos dentro. Part de archivo [] = dest.listFiles (); // Devuelve una matriz de nombres de ruta abstractos, estos nombres de rutas representan archivos en el directorio representado por este nombre de ruta abstracto. if (part.length == 0) {Throw New RuntimeException ("El fragmento no existe");} // y use secuencias de secuencia para fusionar ArrayList <FileInputStream> list = new ArrayList <fileInputStream> (); // para (int i = 0; i <partTh.length; i ++) {// list.add (newd (newd (newd (neo FileInputStream (part [i]))); // Este no es el caso, los archivos fusionados están en orden desordenado //} para (int i = 0; i <partTh.length; i ++) {list.add (nuevo fileInputStream (nuevo archivo (dest, filename+ (i+ 1)+ "parte"))); // tecnología de encogimiento de los archivos, el orden de los archivos debe ser agregado el archivo original el archivo original} Enumeración de la interfaz <fileInputStream> en = Collections.ENumeration (lista); SecuenceInputStream sq = new SeclenceInputStream (en); // Escriba en el nuevo archivo FileOutputStream fou = new FileOutputStream (new File (Dest, FileName)); byte buf [] = new byte [1024]; sq.read (buf); int len = 0; while ((len = sq.Read (buf)> 0) {fouw.wrwrwRen. Len);} fou.close (); sq.close ();} private static void Cuttingfile (File Foured, File Dest) {// CUT Try {FileInputStream Fis = new FileInputStream (fuente); if (! Dest.Exists ()) {// Operación de archivo IO transmite si el archivo existe. dest.mkdir ();} byte buf [] = new byte [1024 * 1024]; // 1mfis.read (buf); int len = 0; int cout = 1; while ((Len = fis.read (buf))! = -1) {// use para cortar el archivo de archivo de archivo fout = new FileStream (new File (Dest, fuente (fuente) (cout ++)+"Parte"))); fout.write (buf, 0, len); fout.close ();}} catch (fileNotFoundException e) {// tODO BLOCKE.PRINTSTACKTRACE blocke.printstacktrace ();}}}Corte de archivos: corte un archivo en varias piezas, cada pieza de fragmento no debe exceder los 1 m de tamaño. Puede ampliar aún más la función: el nombre del archivo, la longitud antes de cortar, el número de piezas después del corte, el nombre del archivo y otra información se pueden escribir en la primera pieza o usar propiedades para escribirlas en el archivo de configuración.
Fusionar el archivo: aquí hay una suposición simple de que se conoce el nombre del objeto de archivo y el archivo original que se fusionan. De hecho, estos pueden estar completamente vivos. Si guarda esta información en un archivo o archivo de configuración fragmentado, también puede usar el cuadro de diálogo Selección de archivos para leer la elección del usuario.
Para obtener más información sobre los algoritmos Java, los lectores interesados en este sitio pueden ver los temas: "Resumen de archivos Java y habilidades de operación de directorio", "Tutorial sobre estructuras de datos de Java y algoritmos", "Resumen de habilidades de nodo DOM de operación Java" y "Resumen de habilidades de operación de cache de Java"
Espero que este artículo sea útil para la programación Java de todos.