Este artigo descreve as operações de corte e fusão do Java para implementar arquivos grandes. Compartilhe -o para sua referência, como segue:
Aqui percebemos o corte e a fusão de arquivos grandes.
Cortado pelo número especificado (como cortar um arquivo em 10 cópias) ou cortar pelo tamanho especificado (como o número máximo de cada cópia não está excedendo 10m). Ambos os métodos estão ok.
Aqui estou apenas escrevendo um código simples para você:
pacote io2; importar java.io.file; importar java.io.fileInputStream; importar java.io.fileNotFoundException; importar java.io.fileOutputStream; import java.io.ioexception; import java.io.sequenceiniSteream; import.util.utilist; java.util.enumeration; importar javax.swing.jfileChooser; public class FileplitDemo {/*** Realize corte e fusão de arquivos grandes. Cortado pelo número especificado (como cortar um arquivo em 10 cópias) ou cortar pelo tamanho especificado (como o número máximo de cada cópia não está excedendo 10m). Ambos os métodos estão ok. */public static void main (string [] args) {jfileChooser jfc = new jfileChooser (); // selecione Arquivo no swing // Selecione o arquivo int resultado = jfc.showpendialog (null); // o quadro de exibição é usado para selecionar arquivo de arquivo = null; Jfilechooser.approve_option) {// selecione Arquivo // Corte o arquivo de arquivo = jfc.getSelectedFile (); // File selecionado pelo usuário Dest = new File (file.getParent (), "Splifile"); CutingFile (arquivo, dest); // Método //) MERGE (quando a execução, diretamente Merge o fragmento de FILE (FILE, DET); file.getName (); Mergedemo (dest, nome do arquivo); // Arquivo de mesclagem}} Catch (ioexception e) {// TODO GACK BLOCKE.printStacktrace ();}}} Void privado Mergedemo (arquivo de arquivo String FILENDEN); {THRON NOVA RUNTimeException ("O arquivo não existe");} // Use uma matriz de arquivos para carregar todos os arquivos internos. Parte do arquivo [] = dest.listfiles (); // retorna uma matriz de nomes de caminho abstratos, esses nomes de caminhos representam arquivos no diretório representado por esse nome de caminho abstrato. if (parth.length == 0) {lança nova runtimeException ("fragmento não existe");} // y usa fluxos de sequência para mesclar ArrayList <FileInputStream> list = new ArrayList <FileInpTStream> (); // para (int i = 0; i <Partth.Length; não é o caso, os arquivos mesclados estão em ordem desordenada //} para (int i = 0; i <Partth.Length; i ++) {list.add (new FileInputStream (new File (destination, names+ (i+ 1)+ "parte"))); // Technology, a ordem dos arquivos deve ser adicionada como o mesmo, como o mesmo, o mesmo, o mesmo, o mesmo, o mesmo, o tipo de linha do tipo ")); Coleções.Enumeration (lista); SequenceInputStream sq = new SequenceInputStream (pt); // grava no novo arquivo fileOutputStream fou = new FileOutputStream (novo arquivo (dest, nome do arquivo); len);} fou.close (); sq.close ();} private estático void de corte (fonte do arquivo, arquivo dest) {// corte tente {fileInputStream fis = new FileInputStream (origem); if (! Dest.exists ()) {// Operação de arquivo io Stream para determinar se o arquivo existe. dest.mkdir ();} byte buf [] = novo byte [1024 * 1024]; // 1mfis.read (buf); int len = 0; int cout = 1; while (len = fis.read (buf))! = -1) {// use o fluxo de saída para cortar o arquivo de arquivo, o arquivo de arquivo, o arquivo. (cout ++)+"parte")); fout.write (buf, 0, len); fout.close ();}} catch (fileNotfoundException e) {// TODO auto-genoutated Blocke.printStackTrace ();} catch (ioException e) {/owdo autO autOutOn.Corte do arquivo: corte um arquivo em várias peças, cada pedaço de fragmento não deve exceder com 1m de tamanho. Você pode expandir ainda mais a função: o nome do arquivo, o comprimento antes do corte, o número de peças após o corte, o nome do arquivo e outras informações podem ser gravadas na primeira peça ou usar propriedades para gravar -as no arquivo de configuração.
Mesclar o arquivo: Aqui está uma suposição simples de que o nome do objeto de arquivo e o arquivo original mesclado são conhecidos. De fato, estes podem estar completamente vivos. Se você salvar essas informações em um arquivo ou arquivo de configuração fragmentado, também poderá usar a caixa de diálogo Seleção de arquivos para ler a escolha do usuário.
Para obter mais informações sobre os algoritmos Java, os leitores interessados neste site podem visualizar os tópicos: "Resumo dos arquivos Java e habilidades de operação de diretório", "Tutorial sobre estruturas e algoritmos de dados Java e algoritmos", "Resumo das habilidades da operação Java Dom Node" e "Summary of Java cache Operação Skills"
Espero que este artigo seja útil para a programação Java de todos.