Java數據流


---恢復內容開始---

定義

 

在JAVA.IO中可以找到文檔

一串數據像河流一樣,先進先出的方式通過

輸入流:讀操作;

輸出流:寫操作;

File類的使用

package com.jiedada.fil;

import java.io.File;
import java.io.IOException;

public class lif {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //創建File
        File file=new File("f:\\qq\\qq");
        System.out.println("是不是目錄:"+file.isDirectory());
        System.out.println("是不是文件:"+file.isFile());
        //添加目錄
        File file1=new File("f:\\qq\\qq\\qq","HashSet");
        if(!file1.exists())
        {
            file1.mkdirs();
        }
        File file2=new File("f:\\qq\\qq1");
        //添加文件
        if(!file2.exists())
        {
            try {
                file2.createNewFile();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }

}
View Code

 

file是文件的意思

字節流

FileInputSteam讀取文件,視頻等等0 1序列的輸入常用方法

每次都要釋放出系統占有的資源

對象。close方法;

 

 

package com.jiedada.fil;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileInouteStea {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        File file=new File("f:\\qq\\qq\\qq.txt");
        try {
            FileInputStream filein=new FileInputStream(file);
            //輸出的幾種方式
            /*    int n=filein.read();
                while(n!=-1) {
                    System.out.print((char)n);
                    n=filein.read();
                }*/
            //第二種
            /*int n=0;
            while((n=filein.read())!=-1)
            {
                System.out.print((char)n);
            }*/
            //第三種
            byte b[]=new byte[100];
            filein.read(b, 0, 5);
            System.out.print(new String(b));
            filein.close();
            
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch(IOException e) {
            e.printStackTrace();
        }
        

    }

}
View Code

輸入輸出流的方法

package com.jiedada.fil;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class rw {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //定義輸入輸出流
        try {
            FileInputStream fis=new FileInputStream("f:\\qq\\read\\pulpit.jpg");
            FileOutputStream fos=new FileOutputStream("f:\\qq\\read\\otherpulpit.jpg");
            int n=0;
            byte b[]=new byte[1024];
            if((n=fis.read(b))!=-1) {
                //讀入相同大小的圖片
                fos.write(b,0,n);
            }
            //必須執行
            fis.close();
            fos.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //這個判定也很重要
        catch(IOException e) {
            e.printStackTrace();
        }

    }

}
View Code

緩沖流

因為在硬盤中讀寫的速度太慢了所以我們需要增加程序的數度需要用到

BUfferedInputSteam

BufferedOutputSteam

package com.jiedada.fil;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.BufferOverflowException;

public class sad {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            FileInputStream fis=new FileInputStream("f:\\qq\\qq\\qq.txt");
            BufferedInputStream bis=new BufferedInputStream(fis);
            FileOutputStream fos=new FileOutputStream("f:\\qq\\qq\\qq.txt");
            BufferedOutputStream bos=new BufferedOutputStream(fos);
            long start=System.currentTimeMillis();
              bos.write(10);
            bos.write('a');
            //如果沒有這樣的語句就無法顯示在文件中,而是放在其他位置
            bos.flush();
            System.out.println(bis.read());
            System.out.println((char)bis.read());
            long end =System.currentTimeMillis();
            System.out.println(end-start);
            //必須寫入
            bos.close();
            fos.close();
            bis.close();
            fis.close();
        
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch(IOException e) {
            e.printStackTrace();
        }

    }

}
View Code

 

字符流

和字節流基本差不多

package com.jiedada.fil;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class StringFile {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            FileInputStream fis=new FileInputStream("f:\\qq\\qq\\qq.txt");
            InputStreamReader isd=new InputStreamReader(fis);
            BufferedReader br=new BufferedReader(isd);
            FileOutputStream fos=new FileOutputStream("f:\\qq\\qq\\qq1.txt");
            OutputStreamWriter osw=new OutputStreamWriter(fos);
            BufferedWriter bw=new BufferedWriter(osw);
            int n=0;
            char c[]=new char[10];
            /*while((n=isd.read())!=-1) {
                System.out.print((char)n);
            }*/
            while((n=br.read(c))!=-1) {
                osw.write(c,0,n);
                
                osw.flush();
            }
            fis.close();
            isd.close();
            fos.close();
            osw.close();
            br.close();
            bw.close();
            
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch(IOException e) {
            e.printStackTrace();
        }

    }

}
View Code

 幾個必須,和其中的邏輯關系不要混淆了;

對象的序列化與反序列化

當發送的內容多種多樣的時候比如端口什么等等,我們需要發送一個類,這樣通過解析我們就能獲得我們想要的內容了

需要繼承Serializable接口

類的創建

package com.jiedada.fil;

import java.io.Serializable;

public class Goods implements Serializable{
     private String id;
     private String name;
     private int price;
     public Goods() {
         
     }
    public Goods(String id, String name, int price) {
        super();
        this.id = id;
        this.name = name;
        this.price = price;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    @Override
    public String toString() {
        return "Goods [id=" + id + ", name=" + name + ", price=" + price + "]";
    }
        
    
}
View Code

測試類的創建

package com.jiedada.fil;

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

public class GoodsTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //定義一個類
        Goods goods=new Goods("s001","diannao",3000);
        //寫出數據
        FileOutputStream fos;
        try {
            fos = new FileOutputStream("f:\\qq\\qq\\qq.txt");
            ObjectOutputStream oos=new ObjectOutputStream(fos);
            //讀入數據
            FileInputStream fis=new FileInputStream("f:\\qq\\qq\\qq.txt");
            ObjectInputStream ois=new ObjectInputStream(fis);
            oos.writeObject(goods);
            oos.writeBoolean(true);
            oos.flush();
            System.out.println(ois.readBoolean());
            try {
                Goods goods1=(Goods)ois.readObject();
                System.out.println(goods1);
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            fis.close();
            fos.close();
            oos.close();
            ois.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch(IOException e) {
            e.printStackTrace();
        }
        
        
        

    }

}
View Code

 

---恢復內容結束---


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM