Ich will ein File zippen, bevor ich es auf die Festplatte schreibe. Leider ist das gezippte File dann grösser als die normale datei ???:L , und das zip-Archiv ist auch ungültig.
Hier der Teil, wo gezippt werden soll:
mfg sooks
Hier der Teil, wo gezippt werden soll:
Code:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.zip.*;
public class FileExp extends JFrame
implements ActionListener
{ JButton load;
JButton create;
JButton delete;
JButton zip;
JFileChooser lade;
JFileChooser erstelle;
JFileChooser zippen;
JTextArea edit;
JTextField datei;
String name;
String zipname;
public FileExp()
{ Container c = getContentPane();
load = new JButton("Laden von...");
create = new JButton("Speichern in...");
delete = new JButton("Datei löschen");
zip = new JButton("Zippen in...");
datei = new JTextField("");
datei.setEditable(false);
edit = new JTextArea("");
edit.add(new JScrollPane());
edit.setEditable(true);
JPanel buttons = new JPanel();
c.setLayout(new BorderLayout());
buttons.setLayout(new GridLayout(1,4));
c.add(edit, BorderLayout.CENTER);
c.add(buttons, BorderLayout.SOUTH);
c.add(datei, BorderLayout.NORTH);
buttons.add(load);
buttons.add(create);
buttons.add(delete);
buttons.add(zip);
delete.setBorder(BorderFactory.createEtchedBorder());
load.setBorder(BorderFactory.createEtchedBorder());
create.setBorder(BorderFactory.createEtchedBorder());
edit.setBorder(BorderFactory.createEtchedBorder());
datei.setBorder(BorderFactory.createEtchedBorder());
zip.setBorder(BorderFactory.createEtchedBorder());
load.addActionListener(this);
delete.addActionListener(this);
create.addActionListener(this);
zip.addActionListener(this);
}
public void actionPerformed(ActionEvent event)
{ try
{ if(create == event.getSource())
{ erstelle = new JFileChooser();
int returnVal = erstelle.showSaveDialog(erstelle);
if (returnVal == JFileChooser.APPROVE_OPTION)
{ name = erstelle.getSelectedFile().getPath();
datei.setText(name);
new File(name).createNewFile();
String s;
while ((s = edit.getText()) == null);
FileOutputStream fos = new FileOutputStream(name);
fos.write( s.getBytes() );
fos.close();
}
erstelle.setVisible(true);
}
if(load == event.getSource())
{ lade = new JFileChooser();
int returnVal = lade.showOpenDialog(lade);
if (returnVal == JFileChooser.APPROVE_OPTION)
{ name = lade.getSelectedFile().getPath();
datei.setText(name);
byte buffer[] = new byte[4000];
FileInputStream fis;
fis = new FileInputStream(name);
int len = fis.read(buffer, 0, 4000);
String str = new String(buffer, 0, len);
edit.setText(str);
fis.close();
}
lade.setVisible(true);
}
if(zip == event.getSource())
{ zippen = new JFileChooser();
int returnVal = zippen.showSaveDialog(zippen);
if (returnVal == JFileChooser.APPROVE_OPTION)
{ zipname = zippen.getSelectedFile().getPath();
FileInputStream is = new FileInputStream(name);
ZipOutputStream os = new ZipOutputStream(new FileOutputStream(zipname));
byte[] buffer=new byte[1000];
int len;
os.setLevel(0);
ZipEntry ze;
ze=new ZipEntry(zipname);
os.putNextEntry(ze);
while(0<(len=is.read(buffer)))
os.write(buffer,0,len);
os.closeEntry();
os.flush();
os.close();
is.close();
}
}
if(delete == event.getSource())
{ new File(name).delete();
System.out.println(name);
edit.setText("");
}
}
catch(IOException e)
{ System.out.println("Fehler!");
}
}
public static void main(String[] args)
{ JFrame start = new FileExp();
start.setSize(800,600);
start.setLocationRelativeTo(null);
start.setVisible(true);
}
}
mfg sooks