📄 fileoperator.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 + -