顯示具有 Java SE::I/O 處理 標籤的文章。 顯示所有文章
顯示具有 Java SE::I/O 處理 標籤的文章。 顯示所有文章

2015年10月12日 星期一

Serializable 的應用

範例:
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;

public class Stock implements Serializable{
    private static final long serialVersionUID = 100L;
    private String symbol;
    private int shares;
    private double purchasePrice;
    private transient double currPrice;

    public Stock(String symbol, int shares, double purchasePrice) {
        this.symbol = symbol;
        this.shares = shares;
        this.purchasePrice = purchasePrice;
        setStockPrice();
    }
    
    private void setStockPrice() {
        this.currPrice = this.purchasePrice;
    }
     
    private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException{
        ois.defaultReadObject();
        setStockPrice();
    }
}

import java.io.FileInputStream;
import java.io.Serializable;
import java.util.Set;

public class Portfolio implements Serializable{
    public transient FileInputStream inputFile;
    public static int BASE = 100;
    private transient int totalValue = 10;
    private Set stocks;
 
    Portfolio(Stock s1, Stock s2, Stock s3) {
        this.stocks.add(s1);
        this.stocks.add(s2);
        this.stocks.add(s3);
    }  
}

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Demo {
    public static void main(String[] args){
    
        Stock s1 = new Stock("ORCL",100, 32.5);
        Stock s2 = new Stock("AOOL",100, 245);
        Stock s3 = new Stock("GOGL",100, 54.67);
        
        Portfolio p = new Portfolio(s1,s2,s3);
        
        try(FileOutputStream fos = new FileOutputStream(args[0]);
            ObjectOutputStream out = new ObjectOutputStream(fos)){
            out.writeObject(p);
        } catch (IOException ex) {
           System.out.println("Exception writing out Portfolio :" + ex);
        }
        
        try(FileInputStream fis = new FileInputStream(args[0]);
            ObjectInputStream in = new ObjectInputStream(fis)){
            Portfolio newP = (Portfolio)in.readObject();
        } catch (ClassNotFoundException | IOException ex) {
           System.out.println("Exception reading in Portfolio :" + ex);
        }
    }
}

2015年10月7日 星期三

I/O Chain 的練習

Buffer 與 File 的 Chain :
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class ChainDemo {
    public static void main(String[] args){
        try(BufferedReader bufInput = new BufferedReader(new FileReader(args[0]));
            BufferedWriter bufOutput = new BufferedWriter(new FileWriter(args[1]))){
            String line = "";
            while ((line = bufInput.readLine()) != null){
                bufOutput.write(line);
                bufOutput.newLine();
            }
        }   catch (FileNotFoundException ex) {
            System.out.println("File not found!");
        } catch (IOException ex) {
            System.out.println("I/O Error");
        }  
    }
}

InputStream 與 OutputStream

Byte 種類的 I/O 處理:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class StreamDemo {
    public static void main(String[] args){
        byte[] data = new byte[128];
        int dataLen = data.length;
        
        try(FileInputStream fis = new FileInputStream(args[0]);
            FileOutputStream fos = new FileOutputStream(args[1])){
            System.out.println("Bytes available: " + fis.available());
            int count = 0;
            int read = 0;
            while ((read = fis.read(data)) != -1){
                if (read < dataLen) 
                    fos.write(data,0,read);
                else
                    fos.write(data);
                count += read;
            }
            System.out.println("Wrote: " + count);
        }   catch (FileNotFoundException ex) {
            System.out.println("File not Found! " + ex);
        } catch (IOException ex) {
            System.out.println("I/O Error! " + ex);
        }
    }
}