你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> IO中的字節流練習

IO中的字節流練習

編輯:關於IOS
1. FileInputStream  FileOutputStream通過字節流來讀寫文件

[java]
public static void main(String[] args) throws Exception {
    //將文件裡寫數據
    File f = new File("d://dmeo.txt");
    FileOutputStream output = new FileOutputStream(f);
    String s = "I Am Learning Java , 我在學習Java";
    byte[] b = s.getBytes(); //將String變為byte數組
    //output.write(b);write可以接收byte數組
    for (int i = 0; i < b.length; i++) {
        output.write(b[i]);
    }
    output.flush();
    output.close();
    //讀取文件裡數據
    FileInputStream input = new FileInputStream(f);
    //開辟一個文件大小的數組空間
    byte[] in = new byte[(int) f.length()];
    //將讀取來的字節放入數組中
    for (int i = 0; i < in.length; i++) {
        in[i] = (byte) input.read();
    }
    System.out.print(new String(in));
    input.close();
}
2. BufferedInputStream BufferedOutPutStream 帶有緩存的讀寫字節流
[java]
public static void main(String[] args) throws Exception {
//將文件裡寫數據
File f = new File("d://dmeo.txt");
BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(f));
String s = "I Am Learning Java , 我在學習Java";
byte[] b = s.getBytes();
output.write(b); //默認會有512字節的緩存,當緩存存滿時一次性向文件中寫入
output.flush();
output.close();
BufferedInputStream input = new BufferedInputStream(new FileInputStream(f));
byte[] in = new byte[(int)f.length()];
    for (int i = 0; i < in.length; i++) {
        in[i] = (byte)input.read();
    }
System.out.println(new String(in));
input.close();
}
2. DataInputStream DataOutputStream 可以讀寫基本數據類型的字節流
[java]
import java.io.*;
//一個簡單的人員類,只有姓名和年齡
public class Person {
    private String name;
    private int age;
    public Person(String name ,int age){
        this.name = name;
        this.age = age;
    }
    public String getName(){
        return this.name;
    }
    public int getAge() {
        return this.age;
    }
    public static void main(String[] args) {
        //構造對象數組
        Person[] p1 = {new Person("Ryan",20),new Person("Tom",30),new Person("Jerry",15)};
        File f = new File("d://demo//demo.txt");
        try {
            DataOutputStream output =  new DataOutputStream(new FileOutputStream(f));
            //寫入數據
            for (int i = 0; i < p1.length; i++) {
                output.writeUTF(p1[i].getName()); //以UTF編碼寫入姓名
                output.writeInt(p1[i].getAge()); //以Int型寫入年齡
            }
            output.flush();
            output.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        Person[] p2 = new Person[p1.length];
        try {
            //讀出數據
            DataInputStream input = new DataInputStream(new FileInputStream(f));
            for (int i = 0; i < p1.length; i++) {
                String name =  input.readUTF(); //讀出姓名
                int age  = input.readInt(); //讀出年齡
                //重新構造person對象
                p2[i] = new Person(name,age);
            }
                input.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //檢查是否還原正確
        for (int i = 0; i < p2.length; i++) {
            System.out.println("姓名:" + p2[i].getName() + " ;年齡:" + p2[i].getAge());
        }
    }
}<strong>
</strong>
2. PrintStream  將內存中的數據經過相應的轉換後再輸出
[java]
public static void main(String[] args){
    File f = new File("d://dmeo.txt");
    String studentName = "TOM";
    int age = 20;
    double totalScore = 600.0f;
    PrintStream ps = null;
    try {
        ps = new PrintStream(new FileOutputStream(f));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    //格式化後輸出
    ps.printf("姓名:%s , 年齡:%d , 總分:%3.1f",studentName,age,totalScore);
}
原文地址:http://www.2cto.com/kf/201302/187784.html
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved