1. Prinzip des Dateiausschneidens/Kombination
Das Schneiden von Dateien besteht darin, eine Datei in mehrere kleine Dateien zu schneiden. Die Methode besteht darin, ein Dateiobjekt in Form eines "Dateistroms" zu lesen und es dann gemäß einer bestimmten Blockgröße in Dateien zu speichern. Die Dateikombination bedeutet, mehrere Dateien in einer Datei zu kombinieren. Zum Beispiel wird dieses Prinzip für Verpackungswerkzeuge (weise) verwendet. Wenn Sie mit dem Konzept von "Flow" vertraut sind, sind die Implementierungsschritte einfach zu implementieren. 2. realisieren
Erstellen Sie ein neues Projekt in Delphi, fügen Sie dann zwei Schaltflächen hinzu, eine Bearbeitung, einen Openendialog und einen gespeicherten Formular in das Form Kontrollen weggelassen Attribute). Doppelklicken Sie auf Taste1 und Taste2 und schreiben Sie den folgenden Code:
// die Datei schneiden
Procedure tform1.button1click (Absender: tobject);
var
Ich, wollte Fagsize, Realtowrite: Ganzzahl;
// zwei Dateistream -Objekte deklarieren
// Instream ist das Eingabefieldatei -Stream -Objekt, und überstream ist das Output -Schnittdatei -Stream -Objekt
Anstrom, außerhalb: tFileStream;
S: String;
Beginnen
Wenn opendialog1.execute dann
Beginnen
SAREDIALOG1.TITLE: = 'Geben Sie den Namen der Schneiddatei ein, die Sie speichern möchten.'
Wenn retteteialog1.execute dann
Beginnen
Suchtfragsize: = strtoint (edit1.text);
I: = 0;
// Erstellen Sie ein Eingabedatei-Stream-Objekt auf schreibgeschützte Weise
Anstrom: = tfilestream.create (
Opendialog1.FileName, fMopenRead);
Versuchen
// Wenn die aktuelle Zeigerposition des Antriebsstreams nicht am Ende liegt, lesen Sie die Daten vor und speichern Sie sie gemäß der definierten Blockgröße // in eine Datei
while (intream.position <intream.size) tun
Beginnen
s: = inttostr (i);
während Länge (s) <3 do S: = '0'+S;
S: = '.'+s;
// Generieren Sie die Erweiterung der Schnittdatei und verwenden Sie drei Ziffern als Erweiterung, um die Kombination von Dateien zu erleichtern
// Wenn die verbleibende Blockgröße im Anstrom kleiner als die definierte Blockgröße ist, speichern Sie die verbleibende Blocknummer // Daten in eine Datei
Wenn instrenm.size - instrenm.position <suchtfragsize dann dann
RealTowrite: = instrenm.Size - Instrom.Position
anders
Realtowrite: = WantfragSize;
// Erstellen Sie ein Ausgabedatei -Stream -Objekt
Überstream: = tFileStream.create (Savedialog1.FileName+s, fmcreate);
versuchen
Outstream.copyfrom (instrenm, realTowrite);
Inc (i);
Endlich
// das Ausgabedatei -Stream -Objekt loslassen
Überstream.free;
Ende;
Ende;
Endlich
Intream.free;
Ende;
Ende;
Ende;
Ende; // Kombinationsdatei
procedure tform1.button2click (Absender: tobject);
var
I: Ganzzahl;
Anstrom, außerhalb: tFileStream;
SourcePath, Fragname, s: String;
Beginnen
Opendialog1.title: = 'Bitte wählen Sie die Schnittdatei';
Wenn opendialog1.execute dann
Beginnen
// Erhalten Sie den Pfad zur aktuell geöffneten Schnittdatei
SourcePath: = ExtractFilePath (Opendialog1.FileName);
// Erhalten Sie den Dateinamen der aktuell geöffneten Schnittdatei
Fragname: = ExtractFileName (Opendialog1.FileName);
SAREDIALOG1.TITLE: = 'Bitte geben Sie den Dateinamen ein, den Sie kombinieren möchten.';
Wenn retteteialog1.execute dann
Beginnen
I: = 0;
s: = inttostr (i);
während Länge (s) <3 do S: = '0'+S;
S: = '.'+s;
Fragname: = ChangeFileext (Fragname, s);
// Wenn im Verzeichnis eine Datei mit der Erweiterung .000 vorhanden ist, erstellen Sie einen Ausgabedateistrom // Objekt
Wenn File existiert (SourcePath+Fragname), dann
Beginnen
Überstream: = tFileStream.create (Savedialog1.FileName, fmcreate);
Versuchen
// Dateien in Schritten mit der Dateierweiterung kombinieren
Während Dateiexisten (SourcePath+Fragname) tun
Beginnen
Instreme: = tFilEstream.create (SourcePath+Fragname, fMopenRead);
Versuchen
// Schreiben Sie die Daten des Eingabedateistroms in den Ausgabedateistrom
Outstream.copyfrom (instrenm, 0);
Inc (i);
s: = inttostr (i);
während Länge (s) <3 do S: = '0'+S;
S: = '.'+s;
Fragname: = ChangeFileext (Fragname, s);
Endlich
Intream.free;
Ende;
Ende;
Endlich
Überstream.free;
Ende;
Ende;
Ende;
Ende;
Ende;
Unter den vielen täglichen Tools, die wir verwenden, gibt es viele "Stream" -Objekte, die wir verwenden werden, und ihre Funktionen sind ebenfalls sehr wichtig. Es ist sehr nützlich und wichtiger.