⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileoperator.java

📁 一个可以保存的画图程序
💻 JAVA
字号:
package drawer;

import java.io.*;
import java.util.Vector;
import java.awt.Color;
import java.awt.Point;
import java.util.Iterator;
import java.util.LinkedList;

/**
 * <p>Title: 简单的画图程序</p>
 * <p>Description: 可以实现简单的画图功能</p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: Onlyer Corporation</p>
 * @author Onlyer Lee
 * @version 1.0
 */

class FileOperator {
  static final int OPEN  = 0;
  static final int SAVE = 1;
  static final int END_OF_FILE = -5;

  FileOutputStream fos;
  FileInputStream  fis;
  DataOutputStream dos;
  DataInputStream  dis;

  DrawerCanvas drawerCanvas;

  public FileOperator(String fname, DrawerCanvas dc, int mode) {
    //fname 文件的名字,mode 指示是保存还是打开
    drawerCanvas = dc;

    if(mode == OPEN) {
      LinkedList pointsList;
      Vector vector = drawerCanvas.graphicsVector;
      try {
        fis = new FileInputStream(fname);
        dis = new DataInputStream(fis);

        int a = dis.readInt();
        while(a != END_OF_FILE) {
          pointsList = new LinkedList();
          int drawMode = a;
          int r = dis.readInt();
          int g = dis.readInt();
          int b = dis.readInt();
          Color drawColor = new Color(r, g, b);
          int drawBold = dis.readInt();
          int listSize = dis.readInt();

          for(int i = 0; i <= listSize-1; i++) {
            int x = dis.readInt();
            int y = dis.readInt();
            pointsList.add(new Point(x, y));
          }
          a = dis.readInt();
          vector.add(new Element(drawMode, drawColor, drawBold, pointsList));
        }
        drawerCanvas.paint(drawerCanvas.getGraphics());    //强制刷新drawerCanvas
        fis.close();
        dis.close();
      }
      catch(IOException e) {}
    }
    else if(mode == SAVE) {
      try {
        fos = new FileOutputStream(fname);
        dos = new DataOutputStream(fos);

        Iterator iter = drawerCanvas.graphicsVector.iterator();
        while(iter.hasNext()) {
          Element element = (Element)iter.next();
          int drawMode = element.mode;
          Color drawColor = element.color;
          int drawBold = element.bold;
          LinkedList pointsList = element.pointsList;
          int listSize = pointsList.size();

          dos.writeInt(drawMode);
          dos.writeInt(drawColor.getRed());
          dos.writeInt(drawColor.getGreen());
          dos.writeInt(drawColor.getBlue());
          dos.writeInt(drawBold);
          dos.writeInt(listSize);

          for(int i = 0; i <= listSize-1; i++) {
            Point p = (Point)pointsList.get(i);
            dos.writeInt(p.x);
            dos.writeInt(p.y);
          }
        }
        dos.writeInt(END_OF_FILE);
        fos.close();
        dos.close();
      }
      catch(IOException e) {}
    }
  }
}





























⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -