Welcome, guest! Login / Register - Why register?
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&#40;tempPfad&#41;;
  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&#40;&#41; == null){
   return;
  }
  
  String tempPfad = dialog.getDirectory()+dialog.getFile&#40;&#41;;
  
  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&#40;&#41; == null){
   return;
  }
  
  String tempPfad = dialog.getDirectory()+dialog.getFile&#40;&#41;;
  
  File f = new File&#40;tempPfad&#41;;
  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

Your Name: Code Language: