1. Princípio de corte/combinação de arquivos
O corte de arquivos é cortar um arquivo em vários arquivos pequenos. O método é ler um objeto de arquivo na forma de um "fluxo de arquivo" e salvá -lo em arquivos de acordo com um determinado tamanho de bloco. Combinação de arquivos significa combinar vários arquivos em um arquivo. Por exemplo, esse princípio é usado para ferramentas de embalagem (Wise). Se você estiver familiarizado com o conceito de "fluxo", será fácil de implementar. 2. Perceba
Crie um novo projeto em Delphi, adicione dois botões, uma edição, um opendialog e um savedialog ao formulário, e depois altere a legenda do Button1 para "Cut" e a legenda do botão 2 para "Combinação" (Nota: Outros controles atributos omitidos). Clique duas vezes no botão 1 e no botão2 e escreva o seguinte código:
// corte o arquivo
Procedimento TForm1.Button1Click (remetente: TOBJECT);
var
Eu, desejado, Fragsize, RealTowrite: Integer;
// declarar dois objetos de fluxo de arquivos
// Instream é o objeto de fluxo de arquivo de origem de entrada e o extremo é o objeto de fluxo de arquivo de corte de saída
Instruam, superado: tfilestream;
S: string;
Começar
Se OpenDialog1.Execute então
Começar
Savedialog1.title: = 'Digite o nome do arquivo de corte que deseja salvar';
Se savedialog1.execute então
Começar
WantedFragSize: = strtoint (edit1.text);
i: = 0;
// Crie um objeto de fluxo de arquivo de entrada de maneira somente leitura
Instruam: = tfilestream.create (
Opendialog1.filename, fmopenRead);
Tentar
// Se a posição atual do ponteiro do fluxo do encontro não estiver no final, leia os dados e armazene -os em um arquivo de acordo com o tamanho do bloco definido //
while (Instream.Position <Instruam.size) faça
Começar
s: = inttostr (i);
enquanto comprimento (s) <3 do s: = '0'+s;
s: = '.'+s;
// Gere a extensão do arquivo de corte, use três dígitos como a extensão para facilitar a combinação de arquivos
// Se o tamanho do bloco restante no encontro for menor que o tamanho do bloco definido, salve o número do bloco restante // dados em um arquivo
Se Instream.size - Instruam.Position <WantedFragSize então
RealTowrite: = Instruam.size - Instruam.Position
outro
Realtowrite: = wantedFragSize;
// Crie um objeto de fluxo de arquivo de saída
Superam: = tfilestream.create (savedialog1.filename+s, fmcreate);
tentar
Superam.copyFrom (Instruam, Realtowrite);
Inc (i);
Finalmente
// Libere o objeto de fluxo de arquivo de saída
Superam.free;
fim;
fim;
Finalmente
Instruam.Free;
fim;
fim;
fim;
fim; // arquivo de combinação
procedimento TForm1.Button2Click (remetente: TOBJECT);
var
I: Inteiro;
Instruam, superado: tfilestream;
Sourcepath, FragName, S: String;
Começar
Opendialog1.title: = 'Selecione Corte o arquivo';
Se OpenDialog1.Execute então
Começar
// pegue o caminho para o arquivo de corte atualmente aberto
Sourcepath: = ExtractFilePath (opendialog1.FileName);
// Obtenha o nome do arquivo do arquivo de corte atualmente aberto
FragName: = ExtractFilename (opendialog1.FileName);
Savedialog1.title: = 'Por favor, insira o nome do arquivo que deseja combinar';
Se savedialog1.execute então
Começar
i: = 0;
s: = inttostr (i);
enquanto comprimento (s) <3 do s: = '0'+s;
s: = '.'+s;
FragName: = ChangeFileExt (FragName, S);
// Se houver um arquivo com a extensão .000 no diretório, crie um fluxo de arquivo de saída // objeto
Se fileExists (Sourcepath+FragName)
Começar
Superam: = tfilestream.create (savedialog1.filename, fmcreate);
Tentar
// combinando arquivos em incrementos com a extensão do arquivo
Enquanto o FileExists (Sourcepath+FragName) o fazem
Começar
Instruam: = tfilestream.create (sourcepath+fragName, fmopenRead);
Tentar
// Escreva os dados do fluxo de arquivo de entrada para o fluxo de arquivo de saída
Superam.copyFrom (Instruam, 0);
Inc (i);
s: = inttostr (i);
enquanto comprimento (s) <3 do s: = '0'+s;
s: = '.'+s;
FragName: = ChangeFileExt (FragName, S);
Finalmente
Instruam.Free;
fim;
fim;
Finalmente
Superam.free;
fim;
fim;
fim;
fim;
fim;
Entre as muitas ferramentas diárias que usamos, existem muitos objetos de "fluxo" que usaremos, e suas funções também são muito importantes. agarrar isso é muito útil e mais importante.