Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as Java by foo ( 15 years ago )
import java.awt.FileDialog;
import java.awt.Frame;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
public class Datei {
private String speicherPfad;
public void save(Frame parent, boolean saveAsText) throws FileNotFoundException, IOException{
save(null, parent, saveAsText);
}
public void save(String tempPfad, Frame parent, boolean saveAsText) throws FileNotFoundException, IOException{
if(speicherPfad == null && tempPfad == null){
saveAs(parent, saveAsText);
return;
}
if(tempPfad == null)
tempPfad = speicherPfad;
GeometrischesObjektContainer container = GeometrischesObjektContainer.instance();
Iterator<GeometrischesObjekt> iterator = container.iterator();
File f = new File(tempPfad);
FileOutputStream fs = new FileOutputStream(f);
if(saveAsText){
PrintWriter p = new PrintWriter(new OutputStreamWriter(fs));
while(iterator.hasNext()){
GeometrischesObjekt obj = iterator.next();
p.println(obj.toString());
}
p.flush();
p.close();
} else {
ObjectOutputStream out = new ObjectOutputStream(fs);
out.writeInt(GeometrischesObjektContainer.instance().getAnzahl());
while(iterator.hasNext()){
GeometrischesObjekt obj = iterator.next();
out.writeObject(obj);
}
out.flush();
out.close();
}
speicherPfad = tempPfad;
GeometrischesObjektContainer.instance().modified();
GeometrischesObjektContainer.instance().setIsDirty(false);
}
public void saveAs(Frame parent, boolean saveAsText) throws
FileNotFoundException, IOException {
FileDialog dialog = new FileDialog(parent, "Speichern unter", FileDialog.SAVE);
dialog.setVisible(true);
if(dialog.getFile() == null){
return;
}
String tempPfad = dialog.getDirectory()+dialog.getFile();
save(tempPfad, parent, saveAsText);
}
public void load(Frame parent, boolean saveAsText) throws IOException,
ClassNotFoundException, NumberFormatException, FileNotFoundException, InvalidAttributeException {
FileDialog dialog = new FileDialog(parent, "Laden", FileDialog.LOAD);
dialog.setVisible(true);
if(dialog.getFile() == null){
return;
}
String tempPfad = dialog.getDirectory()+dialog.getFile();
File f = new File(tempPfad);
ArrayList<GeometrischesObjekt> newObjects = new ArrayList<GeometrischesObjekt>();
if(saveAsText){
BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
String line = null;
while((line = r.readLine()) != null){
String[] args = line.split(" ");
if(args[0].equals("Rechteck")){
int laenge = Integer.parseInt(args[1].substring(2));
int breite = Integer.parseInt(args[2].substring(2));
int x = Integer.parseInt(args[3].substring(2));
int y = Integer.parseInt(args[4].substring(2));
Punkt p = new Punkt(x,y);
Rechteck re = new Rechteck(p);
re.setLaenge(laenge);
re.setBreite(breite);
newObjects.add(re);
} else if(args[0].equals("Kreis")){
int radius = Integer.parseInt(args[1].substring(2));
int x = Integer.parseInt(args[2].substring(2));
int y = Integer.parseInt(args[3].substring(2));
Punkt p = new Punkt(x,y);
Kreis k = new Kreis(p);
k.setRadius(radius);
newObjects.add(k);
}
}
r.close();
} else {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(f));
int count = in.readInt();
for(int i = 0; i < count; i++){
GeometrischesObjekt obj = (GeometrischesObjekt)in.readObject();
newObjects.add(obj);
}
in.close();
}
//hier zu dem zeitpunkt haben wir alle exceptions "überstanden"
//sprich wenn ich erst hier die objekte hinzufüge muss ich im falle einer
//Exception nichts zurücksetzen weil sich eh (noch) nichts geändert hatte.
GeometrischesObjektContainer container = GeometrischesObjektContainer.instance();
container.clear();
for(GeometrischesObjekt obj : newObjects){
container.linkAlleObjekte(obj);
}
//wir haben ja grad geladen
//also sind wir nicht dirty
//weil noch nix geändert wurde.
container.setIsDirty(false);
//aber was geändert haben wir
container.modified();
speicherPfad = tempPfad;
}
}
Revise this Paste