初心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画像として保存するわけではありません.五子棋の保存は画板の保存と同じです.すべてはここで画板の保存を見せてください.
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;
}
}