public void writeBytes(String Dateiname,String Beschreibung) throws Exception{
RandomAccessFile ausgabedatei = null;
//==========================================================================
try {
Beschreibung = Beschreibung + "\n";
ausgabedatei = new RandomAccessFile(Dateiname, "rw");
String Headerlaenge = Beschreibung.substring(0,4);
int headerlength = new java.lang.Integer( Headerlaenge );
long filelength = ausgabedatei.length();
ausgabedatei.seek(0);
if (ausgabedatei != null) {
System.out.println("ByteWriter schreibt die Beschreibung in die Datei: " + Dateiname + "\n");
FileInputStream in = new FileInputStream(Dateiname);
byte _text[] = Beschreibung.getBytes();
ausgabedatei.skipBytes(_text.length);
byte buf[][] = new byte[2][1024];
int x[] = new int[2];
while ( ( x[0] = in.read(buf[0],0,1024)) != -1 )
{
if(buf[1] != null) //nur wenn es nicht null ist => ab 2ten Durchlauf
ausgabedatei.write(buf[1],0,x[1]);
x[1] = x[0]; //wieviel bytes geschrieben werden müssen
System.arraycopy(buf[0],0,buf[1],0,1024); //kopiert es rüber
}
if(buf[1] != null)
ausgabedatei.write(buf[1],0,x[1]);
ausgabedatei.seek(0); //auf den anfang setzen
ausgabedatei.write(_text);
System.out.println("Die Datei: " + Dateiname + " hat " + ausgabedatei.length() + " Bytes...");
in.close();
ausgabedatei.close();
}
}
catch(Exception e) {
e.printStackTrace();
}
//==========================================================================
if (ausgabedatei != null) {
System.out.println("Die Datei: " + Dateiname + " hat nun " + ausgabedatei.length() + " Bytes..." + "\n" );
System.out.println("=======" );
ausgabedatei.close();
}
//========================================================================== }
public void deleteBytes(String Dateiname) throws Exception{
RandomAccessFile ausgabedatei = null;
String Beschreibung = null;
try {
ausgabedatei = new RandomAccessFile(Dateiname, "rw");
File filename = new File(Dateiname);
Beschreibung = ausgabedatei.readLine();
String Headerlaenge = Beschreibung.substring(0,4);
int headerlength = new java.lang.Integer( Headerlaenge );
String Headertyp = Beschreibung.substring(4,9);
int headertyp = new java.lang.Integer( Headertyp );
System.out.println("ByteDeleter löscht den " + headerlength + " byte " + "Header der Datei: " + filename.getName() + "\n" );
System.out.println("Die Datei: " + filename.getName() + " hat vor dem Löschen: " + ausgabedatei.length() + " Bytes...");
ausgabedatei.seek(0);
// Alle Bytes ab Position headerlength+1 (da Umbruch) an den Anfang der Datei umkopieren
ausgabedatei.getChannel().transferTo(headerlength+1, ausgabedatei.length(), ausgabedatei.getChannel());
// Datei am Ende um 80 Byte verkürzen
ausgabedatei.setLength(ausgabedatei.length()-headerlength-1);
System.out.println("Die Datei: " + filename.getName() + " hat nach dem Löschen: " + ausgabedatei.length() + " Bytes..." + "\n");
ausgabedatei.close();
}
catch(Exception e) {
e.printStackTrace();
}
}