初心java--IOフロー


いわゆる流れは、生活の中の水の流れに似ていて、一端が流入し、一部が流出しています.JAvaのストリームオブジェクトのソースはオペレーティングシステムのファイルで、目的はコンソールまたはファイルです.プログラムでオペレーティングシステムのファイルを呼び出すとき、つまり水を飲むので、入力ストリーム--InputStreamを使います.ファイルフォーマットを定義するとき、つまり水を注ぐので、OutputStresamを使います.
      JAvaのすべてのストリームオブジェクトはjava.ioパッケージの下にあります.これは、ストリームオブジェクトを呼び出すときにIO例外を処理する必要があることを示しています.処理するオブジェクトによって、ストリームをいくつかの種類に分けることができます.
基本的な方法で区分:
 出流:クラス名には必ずOutputStreamが付きます 入力フロー:クラス名にInputStreamを含める 性質別に区分: バイトフロー:FileInputStream,FileOutputStream フィルタフロー:バッファフローBufferedInputStream、BufferedOutputStreamは、バッファフローの読み取り速度がバイトフローよりはるかに大きいことを実証しています. 基本データ型ストリーム:DataInputStreamとDataOutputStream オブジェクトフロー:ObjectInputStreamとObjectOutputStream         生活の中で私たちは水道水を飲むにはまず水道工場が必要で、それから水道管が必要です.IOストリームの中で、オブジェクトファイルは水道工場で、ストリームオブジェクトは水道管で、私たちはファイル名に基づいて入力ストリームオブジェクトを作成して、それから水道管を開けて、つまりストリームオブジェクトの読み取りを呼び出す方法で、1バイト1バイトの読み取りができて、1回に持っているファイルを読み取ることができて、バッファストリームで読み取ることができて、このようにして、ファイルはコンソールの中に流れました.
       InputStreamでよく使われる方法は次のとおりです.
 int available()           この入力ストリームを返す次のメソッド呼び出しは、入力ストリームからブロックされずに読み出される(またはスキップされる)推定バイト数である.  void close()           この入力ストリームを閉じ、ストリームに関連付けられたすべてのシステムリソースを解放します.    read()           入力ストリームからデータの次のバイトを読み出します.  int read(byte[] b)           入力ストリームから一定数のバイトを読み出し、バッファ配列bに格納する.  int read(byte[] b, int off, int len)           入力ストリームの最大len個のデータバイトをbyte配列に読み込みます.     OutputStreamでよく使われる方法は次のとおりです.
 
 void close()           この出力ストリームを閉じ、このストリームに関連するすべてのシステムリソースを解放します.  void flush()           この出力ストリームをリフレッシュし、すべてのバッファの出力バイトを強制的に書き出します.  void write(byte[] b)           b.lengthバイトを指定したbyte配列からこの出力ストリームに書き込みます.  void write(byte[] b, int off, int len)           指定したbyte配列のオフセットoffから始まるlenバイトをこの出力ストリームに書き込みます. abstract  void write(int b)           指定したバイトをこの出力ストリームに書き込みます.   学習した流れの知識に基づいて,画板の保存と五子棋の保存が完了した.画板の保存は、描いた図形のすべての情報:座標、色、形状をファイルに保存し、ファイルを読み取るときに情報を抽出して再描画する.......もちろんbmp画像として保存するわけではありません.五子棋の保存は画板の保存と同じです.すべてはここで画板の保存を見せてください.
import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.Serializable; 

import javax.swing.JPanel; 

import cn.tan.lesson8.Graph; 
import cn.tan.lesson8.NJList; 
import cn.tan.lessson7.Config; 
/** 
*     
* * 
*/ 
public class DrawFrame extends javax.swing.JFrame implements Serializable{ 
private cn.tan.lesson6.NJList njl=null; 
private SaveFile sf=new SaveFile(); 
private DrawFrame df; 
private Graph graph; 
/**s 
*      
* @param args 
*/ 
public static void main(String[] args) { 
//    DrawFrame    
DrawFrame df = new DrawFrame(); 
df.showUI(); 
} 

/** 
*          
*/ 
public void showUI(){ 
//        
this.setSize(600, 500); 
this.setTitle("    "); 

this.setDefaultCloseOperation(3); 
this.setLocationRelativeTo(null); 
this.setResizable(false); 
//        
JPanel pa=new JPanel(); 
//             
pa.setBounds(0, 0, 500, 500); 
//         
pa.setBackground(java.awt.Color.GRAY); 
//         
JPanel ta=new JPanel(); 
//          
ta.setBounds(500, 0, 100, 500); 
ta.setBackground(java.awt.Color.BLACK); 
//       
javax.swing.JButton line = new javax.swing.JButton("  "); 
javax.swing.JButton Qline = new javax.swing.JButton("  "); 
javax.swing.JButton rect = new javax.swing.JButton("  "); 
javax.swing.JButton oval = new javax.swing.JButton("  "); 
javax.swing.JButton btnColor = new javax.swing.JButton("  "); 
javax.swing.JButton savefile = new javax.swing.JButton("    "); 
javax.swing.JButton openfile = new javax.swing.JButton("    "); 
ta.add(btnColor); 
ta.add(Qline); 
ta.add(line); 
ta.add(rect); 
ta.add(oval); 
ta.add(savefile); 
ta.add(openfile); 
this.setLayout(null); 
this.add(pa); 
this.add(ta); 
this.setVisible(true); 
//            
final java.awt.Graphics g = pa.getGraphics(); 
//    DrawMotionListener  
dml = new DrawListener(g,this); 
//               
pa.addMouseMotionListener(dml); 
pa.addMouseListener(dml); 
//            
openfile.addActionListener(new ActionListener(){ 
public void actionPerformed(ActionEvent e) { 
String command=e.getActionCommand(); 
if(command.equals("    ")){ 
njl = sf.openFile(); 
this. paint(g); 

} 
} 

private void paint(Graphics g) { 
if(njl != null){ 
//          
for(int i=0;i<njl.size();i++){ 
cn.tan.lesson6.Graph graph = njl.get(i); 
//     
int value=graph.setvalue(); 
System.out.println(value); 
if(value==2){ 
//     
Color cl=new Color(graph.setr(),graph.setg(),graph.setb()); 
g.setColor(cl); 
//    
g.drawLine(graph.getX1(), graph.getY1(), graph.getX2(), graph.getY2()); 
} if(value==1){ 
//     
Color cl=new Color(graph.setr(),graph.setg(),graph.setb()); 
g.setColor(cl); 
//    
g.drawLine(graph.getX1(), graph.getY1(), graph.getX2(), graph.getY2()); 
}if(value==3){ 
//     
Color cl=new Color(graph.setr(),graph.setg(),graph.setb()); 
g.setColor(cl); 
g.drawRect(Math.min(graph.getX1(),graph.getX2()),Math.min(graph.getY1(), graph.getY2()),Math.abs(graph.getX2()-graph.getX1()) , Math.abs(graph.getY2()-graph.getY1())); 
}if(value==4){ 
//     
Color cl=new Color(graph.setr(),graph.setg(),graph.setb()); 
g.setColor(cl); 
//   
g.drawOval(Math.min(graph.getX1(),graph.getX2()),Math.min(graph.getY1(), graph.getY2()),Math.abs(graph.getX2()-graph.getX1()) , Math.abs(graph.getY2()-graph.getY1())); 
} 
} 
} 
} 
}); 
line.addActionListener(dml); 
rect.addActionListener(dml); 
oval.addActionListener(dml); 
btnColor.addActionListener(dml); 
Qline.addActionListener(dml); 
savefile.addActionListener(dml); 
openfile.addActionListener(dml); 
savefile.addMouseListener(dml); 
} 

/** 
*            
*/ 
public void paint(java.awt.Graphics g){ 
//            
super.paint(g); 
//  dml     null 
if(null != dml){ 
//          
for(int i=0;i<dml.getGraphList().size();i++){ 
cn.tan.lesson6.Graph graph = dml.getGraphList().get(i); 
//     
if(graph.getItem().equals("  ")){ 
//     
g.setColor(graph.getColor()); 
//    
g.drawLine(graph.getX1(), graph.getY1(), graph.getX2(), graph.getY2()); 
} 
if(graph.getItem().equals("  ")){ 
//     
g.setColor(graph.getColor()); 
//    
g.drawLine(graph.getX1(), graph.getY1(), graph.getX2(), graph.getY2()); 
} 

if(graph.getItem().equals("  ")){ 
//     
g.setColor(graph.getColor()); 
//    
g.drawRect(Math.min(graph.getX1(),graph.getX2()),Math.min(graph.getY1(), graph.getY2()),Math.abs(graph.getX2()-graph.getX1()) , Math.abs(graph.getY2()-graph.getY1())); 
} 
if(graph.getItem().equals("  ")){ 
//     
g.setColor(graph.getColor()); 
//   
g.drawOval(Math.min(graph.getX1(),graph.getX2()),Math.min(graph.getY1(), graph.getY2()),Math.abs(graph.getX2()-graph.getX1()) , Math.abs(graph.getY2()-graph.getY1())); 
} 
} 
} 
if(njl != null){ 
//          
for(int i=0;i<njl.size();i++){ 
cn.tan.lesson6.Graph graph = njl.get(i); 
//     
int value=graph.setvalue(); 
System.out.println(value); 
if(value==2){ 
//     
Color cl=new Color(graph.setr(),graph.setg(),graph.setb()); 
g.setColor(cl); 
//    
g.drawLine(graph.getX1(), graph.getY1(), graph.getX2(), graph.getY2()); 
} if(value==1){ 
//     
Color cl=new Color(graph.setr(),graph.setg(),graph.setb()); 
g.setColor(cl); 
//    
g.drawLine(graph.getX1(), graph.getY1(), graph.getX2(), graph.getY2()); 
}if(value==3){ 
//     
Color cl=new Color(graph.setr(),graph.setg(),graph.setb()); 
g.setColor(cl); 
g.drawRect(Math.min(graph.getX1(),graph.getX2()),Math.min(graph.getY1(), graph.getY2()),Math.abs(graph.getX2()-graph.getX1()) , Math.abs(graph.getY2()-graph.getY1())); 
}if(value==4){ 
//     
Color cl=new Color(graph.setr(),graph.setg(),graph.setb()); 
g.setColor(cl); 
//   
g.drawOval(Math.min(graph.getX1(),graph.getX2()),Math.min(graph.getY1(), graph.getY2()),Math.abs(graph.getX2()-graph.getX1()) , Math.abs(graph.getY2()-graph.getY1())); 
} 
} 
} 
} 
//         
private java.awt.Color color; 
//    DrawMotionListener       
private DrawListener dml = null; 
} 


import java.awt.event.ActionEvent; 
import java.awt.event.MouseEvent; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectOutputStream; 
import java.io.OutputStream; 
/** 
*      
* * 
*/ 
public class DrawListener implements java.awt.event.ActionListener, java.awt.event.MouseListener, 
java.awt.event.MouseMotionListener { 
//       ,       
private int x1, y1, x2, y2; 
//          
private java.awt.Graphics g; 
//           
private DrawFrame df; 
//         
private int count = 0; 
//            ,            
private GraphNJList graphList = new GraphNJList(); 
private java.awt.Color color = java.awt.Color.BLACK; 
private String command; 
private String filename; 
// private Graph gh; 
private SaveFile sf=new SaveFile(); 
/** 
*     ,        
* 
* @param g 
*/ 
public DrawListener(java.awt.Graphics g, DrawFrame df) { 
this.g = g; 
this.df = df; 
} 

/** 
*             
*/ 
public void actionPerformed(ActionEvent e) { 
command = e.getActionCommand(); 
if ("  ".equals(command)) { 
//        ,        
color = javax.swing.JColorChooser.showDialog(null, "     ", 
java.awt.Color.BLACK); 
} 
} 

public void mousePressed(MouseEvent e) { 
x1 = e.getX(); 
y1 = e.getY(); 
g.setColor(color); 
} 
public void mouseReleased(MouseEvent e) { 
x2 = e.getX(); 
y2 = e.getY(); 
if ("  ".equals(command)) { 
g.drawLine(x1, y1, x2, y2); 
Graph graph = new Graph("  ",color, x1, y1, x2, y2); 
//          
graphList.add(graph); 
} 

if ("  ".equals(command)) { 
g.drawRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x2 - x1), 
Math.abs(y2 - y1)); 
Graph graph = new Graph("  ",color, x1, y1, x2, y2); 
//          
graphList.add(graph); 
} 
if ("  ".equals(command)) { 
g.drawOval(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x2 - x1), 
Math.abs(y2 - y1)); 
Graph graph = new Graph("  ",color, x1, y1, x2, y2); 
//          
graphList.add(graph); 
} if("    ".equals(command)){ 
//          
sf.saveFile(this.getGraphList()); 
System.out.print("   "); 
} 

} 
/** 
*                
*/ 
public void mouseDragged(MouseEvent e) { 
x2 = e.getX(); 
y2 = e.getY(); 
//      

//        
if ("  ".equals(command)) { 
g.setColor(color); 
g.drawLine(x1, y1, x2, y2); 
//    Graph     
Graph graph = new Graph("  ",color, x1, y1, x2, y2); 
//          
graphList.add(graph); 
x1 = x2; 
y1 = y2; 
} 
if("  ".equals(command)){ 
g.setColor(java.awt.Color.WHITE); 
g.fillOval(x2, y2, 20, 20); 
//    Graph     
Graph graph = new Graph("  ",java.awt.Color.WHITE, x1, y1, x2, y2); 
//          
graphList.add(graph); 
} 
} 
/** 
*           
* 
* @return graphList 
*/ 
public GraphNJList getGraphList() { 
return graphList; 
} 
public void mouseMoved(MouseEvent e) { 
} 
public void mouseClicked(MouseEvent e) { 
} 
public void mouseEntered(MouseEvent e) { 
} 
public void mouseExited(MouseEvent e) { 
} 
} 

import java.io.Serializable; 


/** 
*        
* 
* * 
*/ 

public class Graph { 
private java.awt.Color color; 
private String item; 
private int x1,x2,y1,y2; 
private int value; 
private static int R; 
private static int G; 
private static int B; 

//             
public Graph(String item, java.awt.Color color, int x1, int y1, int x2, 
int y2) { 
this.item = item; 
this.color = color; 
this.x1 = x1; 
this.y1 = y1; 
this.x2 = x2; 
this.y2 = y2; 
} 

//             
public Graph(int x1, int y1, int x2, int y2, int R, int G, int B, int value) { 
this.x1 = x1; 
this.y1 = y1; 
this.x2 = x2; 
this.y2 = y2; 
this.R = R; 
this.G = G; 
this.B = B; 
this.value=value; 
} 

public java.awt.Color getColor() { 
return color; 
} 

public void setColor(java.awt.Color color) { 
this.color = color; 
} 

public String getItem() { 
return item; 
} 

public void setItem(String item) { 
this.item = item; 
} 

public int getX1() { 
return x1; 
} 

public void setX1(int x1) { 
this.x1 = x1; 
} 

public int getY1() { 
return y1; 
} 

public void setY1(int y1) { 
this.y1 = y1; 
} 

public int getX2() { 
return x2; 
} 

public void setX2(int x2) { 
this.x2 = x2; 
} 

public int getY2() { 
return y2; 
} 

public void setY2(int y2) { 
this.y2 = y2; 
} 

public static int setr() { 
return R; 
} 

public static int setg() { 
return G; 
} 

public static int setb() { 
return B; 

} 
public int setvalue(){ 
System.out.println("*****************"+value); 
return value; 
} 

} 

public class GraphNJList implements NJList{ 

//          (            ) 
private Graph [] array = null; 

/** 
*         ,        
*/ 
public GraphNJList(){ 
array = new Graph [0]; 
} 


/** 
*            
*/ 
@Override 
public void add(Graph graph) { 
//        ,              +1 
Graph [] temp = new Graph [array.length+1]; 
//            temp    
for(int i=0;i<array.length;i++){ 
//            temp  
temp[i] = array[i]; 
} 
//                  
temp[array.length] = graph; 
//     
array = temp; 
} 

/** 
*             
*/ 
@Override 
public Graph get(int index) { 
return array[index]; 
} 

/** 
*         
*/ 
@Override 
public int size() { 
return array.length; 
} 

} 

/** 
*     
* * 
*/ 
public interface NJList { 

/** 
*             
*/ 
public void add(Graph graph); 

/** 
*              
*/ 
public Graph get(int index); 

/** 
*            
*/ 
public int size(); 

} 

import java.io.DataInputStream; 
import java.io.DataOutputStream; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.io.OutputStream; 
/** 
*       
* 
* * 
*/ 
public class SaveFile { 
/** 
*         
* @param njl 
*/ 
private int x1,x2,y1,y2; 
private int value; 
public void saveFile(NJList njl) { 
String fileName = "src\\cn\\tan\\lesson6\\graph"; 
try { 
FileOutputStream os = new FileOutputStream(fileName); 
DataOutputStream dos = new DataOutputStream(os); 
//            
dos.writeInt(njl.size()); 
//            
for (int i = 0; i < njl.size(); i++) { 
//   Graph   
Graph g = njl.get(i); 
//       
int x1 = g.getX1(); 
int y1 = g.getY1(); 
int x2 = g.getX2(); 
int y2 = g.getY2(); 
//     rgb  
int R=g.getColor().getRed(); 
int G=g.getColor().getGreen(); 
int B=g.getColor().getBlue(); 
//       
if(g.getItem().equals("  ")){ 
value=1; 
}else if(g.getItem().equals("  ")){ 
value=2; 

}else if(g.getItem().equals("  ")){ 
value=3; 

}else if(g.getItem().equals("  ")){ 
value=4; 
} 
//             
dos.writeInt(x1); 
dos.writeInt(y1); 
dos.writeInt(x2); 
dos.writeInt(y2); 
dos.writeInt(R); 
dos.writeInt(G); 
dos.writeInt(B); 
dos.writeInt(value); 
System.out.println("     :"+x1+"\t"+y1+"\t"+x2+"\t"+y2+"  "+"\tr:"+R+"\tg:"+G+"\tb:"+B+"   :"+value); 
} 
//         
dos.flush(); 
dos.close(); 

} catch (Exception e) { 
e.printStackTrace(); 
} 

} 

/** 
*     ,             
* 
* @return         
*/ 
public NJList openFile() { 
//              
NJList njl = new GraphNJList(); 
String fileName = "src\\cn\\tan\\lesson6\\graph"; 
try { 
FileInputStream fis = new FileInputStream(fileName); 
DataInputStream dis = new DataInputStream(fis); 
//            
int size = dis.readInt(); 
//            
for (int i = 0; i < size; i++) { 
//       
int x1 = dis.readInt(); 
int y1 = dis.readInt(); 
int x2 = dis.readInt(); 
int y2 = dis.readInt(); 
int R=dis.readInt(); 
int G=dis.readInt(); 
int B=dis.readInt(); 
int value=dis.readInt(); 
System.out.println("     :"+x1+"\t"+y1+"\t"+x2+"\t"+y2+"  "+"\tr:"+R+"\tg:"+G+"\tb:"+B+"   :"+value); 
//    Graph   
Graph g = new Graph(x1, y1, x2, y2,R,G,B,value); 
njl.add(g); 
} 
//    
dis.close(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
return njl; 
} 

}