Cet article décrit les opérations de coupe et de fusion de Java pour implémenter des fichiers volumineux. Partagez-le pour votre référence, comme suit:
Ici, nous réalisons la coupe et la fusion de fichiers volumineux.
Coupé par le nombre spécifié (comme couper un fichier en 10 copies) ou couper par la taille spécifiée (comme le nombre maximum de chaque copie ne dépasse pas 10 m). Les deux méthodes sont ok.
Ici, j'écris juste un code simple pour vous:
package io2; import java.io.file; import java.io.fileInputStream; import java.io.filenotfoundException; import java.io.fileoutputStream; import java.util.arraylist; import java.util.collections; import; java.util.enumeration; import javax.swing.jfilechooser; public class filesplitdemo {/ *** réalise la coupe et la fusion de fichiers volumineux. Coupé par le nombre spécifié (comme couper un fichier en 10 copies) ou couper par la taille spécifiée (comme le nombre maximum de chaque copie ne dépasse pas 10 m). Les deux méthodes sont ok. * / public static void main (String [] args) {jFileChooser jfc = new JFileChoOser (); // sélectionnez le fichier dans Swing // SELECT FILE Int result = jfc. JFileChoOser.Approve_Option) {// Select File // Cut File File = jfc.getSelectedFile (); // User Selecte file.getName (); MergedEmo (dest, nom de fichier); // File de fusion}} catch (ioException e) {// TODO GÉNÉRATEUR AUTO GÉNÉRÉ BLOCKE.PRINTSTACKTRACE ();}} Private Static Void MergeDemo (fichier dest, String FileName) Throws If (! {Throw New RuntimeException ("Le fichier n'existe pas");} // Utilisez un tableau de fichiers pour charger tous les fichiers à l'intérieur. Part de fichier [] = dest.ListFiles (); // Renvoie un tableau de noms de chemins abstraits, ces noms de chemin représentent des fichiers dans le répertoire représenté par ce chemin de chemin abstrait. if (Parth.Length == 0) {Throw New RuntimeException ("Fragment n'existe pas");} // y Utilisez des flux de séquence pour fusionner ArrayList <FeleInputStream> list = new ArrayList <leinputStream> (); // pour (int i = 0; i <partth.length; i ++) {// list.add (new fileintStream (Parter [i]); n'est pas le cas, les fichiers fusionnés sont dans l'ordre désordonné //} pour (int i = 0; i <partth.length; i ++) {list.add (new fileInputStream (nouveau fichier (dest, nom de fichier + (i + 1) + "pièce"))); // Technologie de socketing, l'ordre des fichiers devait être ajouté le fichier d'origine} // CollectionS.Enumeration (liste); SequenceInputStream sq = new SequenceInputStream (en); // Écrivez dans le nouveau fichier fileOutputStream Fou = new FileOutputStream (nouveau fichier (dest, nom de fichier)); byte buf [] = nouveau octet [1024]; sq.read (buf); int len = 0; Len);} Fou.Close (); Sq.Close ();} Private Static Void CuttingFile (File Source, File dest) {// Cut Try {FileInputStream Fis = new FileInputStream (source); if (! Dest.Exists ()) {// File Operation io Stream pour déterminer si le fichier existait. dest.mkdir ();} octet buf [] = new byte [1024 * 1024]; // 1mfis.read (buf); int len = 0; int Cout = 1; while ((len = fis.read (buf))! = -1) {// Utiliser Stream pour couper le fichier FileOutStream fout = new FileOutStStream (new File (Deswert, Source. (cout ++) + "partie")); fout.write (buf, 0, len); fout.close ();}} catch (filenotfoundException e) {// TODO Générated Catch Blocke.printStackTrace ();} Catch (ioException e) {// TODO Auto-généré Catch Blocke.Coupe de fichiers: coupez un fichier en plusieurs pièces, chaque morceau de fragment ne doit pas dépasser 1 m. Vous pouvez étendre davantage la fonction: le nom du fichier, la longueur avant la coupe, le nombre de pièces après la coupe, le nom de fichier et d'autres informations peuvent être écrits dans la première pièce ou utiliser des propriétés pour les écrire dans le fichier de configuration.
Merge de fichier: voici une hypothèse simple que le nom de l'objet de fichier et le fichier d'origine fusionné sont connus. En fait, ceux-ci peuvent être complètement vivants. Si vous enregistrez ces informations dans un fichier ou un fichier de configuration fragmenté, vous pouvez également utiliser la boîte de dialogue de sélection de fichiers pour lire le choix de l'utilisateur.
Pour plus d'informations sur les algorithmes Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Résumé des fichiers Java et des compétences de l'opération de répertoire", "Tutoriel sur les structures de données Java et les algorithmes", "Résumé des compétences de nœuds de l'opération Java" »et" Résumé des compétences de l'opération Java Cache "
J'espère que cet article sera utile à la programmation Java de tous.