java随手画保存和打开,能保存,打不开。m_vectorSet是用来保存点的,s和t是定义的点,求指点!
publicvoidsave(){try{FileOutputStreamfos=newFileOutputStream("test.txt");DataOutputSt...
public void save()
{
try
{
FileOutputStream fos=new FileOutputStream("test.txt");
DataOutputStream dos=new DataOutputStream(fos);
dos.writeInt(m_vectorSet.size());
for(int i=1;i<m_vectorSet.size();i++)
{
v=m_vectorSet.get(i);
int m=v.size()-1;
for(int j=1;j<m;j++)
{
s=(Point)v.get(j);
t=(Point)v.get(j+1);
int x1=s.x;
int y1=s.y;
int x2=t.x;
int y2=t.y;
dos.writeInt(x1);
dos.writeInt(y1);
dos.writeInt(x2);
dos.writeInt(y2);
}
}
dos.flush();//关闭输出流
fos.close();
}
catch(Exception ef){ef.printStackTrace();}
}
public void open()
{
try
{
FileInputStream fis=new FileInputStream("test.txt");
DataInputStream dis=new DataInputStream(fis);
int len=dis.readInt();//先读取长度,得到循环次数
for(int i=0;i<len/4;i++)
{
s.x=dis.readInt();s.y=dis.readInt();
t.x=dis.readInt(); t.y=dis.readInt();
Point p1= new Point(s.x,s.y);Point p2= new Point(t.x,t.y);
Vector<Point> v1 = new Vector<Point>();
v1.add(p1);
v1.add(p2);
m_vectorSet.add(v1);
}
repaint();
fis.close();
}
catch(Exception e){e.printStackTrace();}
} 展开
{
try
{
FileOutputStream fos=new FileOutputStream("test.txt");
DataOutputStream dos=new DataOutputStream(fos);
dos.writeInt(m_vectorSet.size());
for(int i=1;i<m_vectorSet.size();i++)
{
v=m_vectorSet.get(i);
int m=v.size()-1;
for(int j=1;j<m;j++)
{
s=(Point)v.get(j);
t=(Point)v.get(j+1);
int x1=s.x;
int y1=s.y;
int x2=t.x;
int y2=t.y;
dos.writeInt(x1);
dos.writeInt(y1);
dos.writeInt(x2);
dos.writeInt(y2);
}
}
dos.flush();//关闭输出流
fos.close();
}
catch(Exception ef){ef.printStackTrace();}
}
public void open()
{
try
{
FileInputStream fis=new FileInputStream("test.txt");
DataInputStream dis=new DataInputStream(fis);
int len=dis.readInt();//先读取长度,得到循环次数
for(int i=0;i<len/4;i++)
{
s.x=dis.readInt();s.y=dis.readInt();
t.x=dis.readInt(); t.y=dis.readInt();
Point p1= new Point(s.x,s.y);Point p2= new Point(t.x,t.y);
Vector<Point> v1 = new Vector<Point>();
v1.add(p1);
v1.add(p2);
m_vectorSet.add(v1);
}
repaint();
fis.close();
}
catch(Exception e){e.printStackTrace();}
} 展开
展开全部
java中序列下标是从0开始的。
for(int j=1;j<m;j++){
s=(Point)v.get(j);
t=(Point)v.get(j+1);
写进去的时候,有重叠了。
如果确定是成对的,不要循环
s=(Point)v.get(0);
t=(Point)v.get(1);
读进来的时候,for(int i=0;i<len/4;i++),结束判断是i<len。
定义自定义对象,直接写对象,更好
class LinePoint{
private int x1;
private int y1;
private int x2;
private int y2;
..............
}
for(int j=1;j<m;j++){
s=(Point)v.get(j);
t=(Point)v.get(j+1);
写进去的时候,有重叠了。
如果确定是成对的,不要循环
s=(Point)v.get(0);
t=(Point)v.get(1);
读进来的时候,for(int i=0;i<len/4;i++),结束判断是i<len。
定义自定义对象,直接写对象,更好
class LinePoint{
private int x1;
private int y1;
private int x2;
private int y2;
..............
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询