程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

JAVA流

編輯:JAVA綜合教程

JAVA流


流概念

流是一串連續不斷的數據的集合,就像水管裡的水流,在水管的一端一點一點地供水,而在水管的另一端看到的是一股連續不斷的水流。數據寫入程序可以是一段一段地向數據流管道中寫入數據,這些數據段會按先向順序形成一個長的數據流。對數據的讀取程序來說,看不到數據流在寫入時的分段情況,每次可以讀取其中的任意長度的數據,但只能先讀取前面的數據後,再讀取後面的數據。不管寫入時是將數據分多次寫入,還是作為一個整體一次寫入,讀取時的效果都是完全一樣的。

流的分類方式

輸入流和輸出流

以程序為參考點,按數據流的方向不同分為輸入流和輸出流

這裡寫圖片描述

字節流和字符流

按處理數據的單位不同分為字節流和字符流

節點流和處理流

按功能不同分為節點流和處理流

流的四大抽象類

J2SDK所提供的所有流類型位於包java.io內都分別繼承以下四種抽象流類型

這裡寫圖片描述

InputStream(字節輸入流)

結構

這裡寫圖片描述

基本方法
InputStream是一個抽象類,程序可以通過InputStream類從文件中把內容讀取出來,首先看一下InputStream類的定義:
public abstract class InputStream extends Object implements Closeable

如果現在是從文件中讀取,因為InputStream本身是一個抽象類,必須依靠其子類FileInputStream來實現, 看FileInputStream類的構造方法:

public FileInputStream(File file) throws FileNotFountException

讀取文件:

import Java.io.File;
import Java.io.InputStream;
import Java.io.FileInputStream;
import Java.io.IOException;
public class ReadFile{
    public static void main(String[] args)throws IOException{
        File file = new File("d:"+File.separator+"test.txt");
        InputStream inputstream = new FileInputStream(file);
        byte[] b = new byte[(int) f.length()];
        inputstream.read(b);
        inputstream.close();
        system.out.println(new String b);
    }
}

如果一個字節一個字節讀入,並且不知道文件的大小:

import Java.io.File;
import Java.io.InputStream;
import Java.io.FileInputStream;
import Java.io.IOException;
public class ReadFile{
    public static void main(String[] args)throws IOException{
        File file = new File("d:"+File.separator+"test.txt");
        InputStream inputstream = new FileInputStream(file);
        byte[] b = new byte[1024];
        int temp = 0;
        int len = 0;
        while((temp=inputstream.read())!=-1){//-1標志文件讀完
            b[len]=(byte)temp;
            len++;
        }
        inputstream.close();
        system.out.println(new String(b,0,len))
    }
}

OutputStream類(字節輸出流)

結構
這裡寫圖片描述

基本方法
OutputStream類和InputStream類一樣,都是抽象類,如果要操作一個文件,可以使用FileOutputStream類。
OutputStream類的定義:

public abstract class OutputStream extends Objects implements Closeable,Flushable

FileOutputStream類的構造方法:

public FileOutputStream(File file) throws FileNotFoundException

寫數據:

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.IOException;
public class WriteFile{
    public static void main(string[] args) throw IOException{
        File file = new File("d:" + File.separator+"test.txt");
        OutputStream outputstream = new FileOutputStream(file)
        String str = "Hello World"
        byte[] b = str.getBytes();
        outputstream.write(b);
        outputstream.close();
    }
}

Reader類(字符輸入類)

結構

這裡寫圖片描述vcq9tNPOxLz+1tDIobP2yv2+3aOstqjS5cjnz8Kjug0KPHByZSBjbGFzcz0="brush:java;"> public abstract class Reader extends Objects implements Readable,Closeable

Reader本身也是抽象類,如果現在要從文件中讀取內容,則可以直接使用FileReader子類。FileReader的構造方法定義如下:

public FileReader(File file)throws FileNotFoundException

讀取數據:

import java.io.File;
import java.io.FileReader;
import java.io.Reader;
import java.io.IOException;

public class Read{
    public static void main(string[] args)throw IOException{
        File file = new File("d:" + File.separator+"test.txt");
        Reader inputreader = new FileReader(file);
        char[] c=new char[1024];
        int len=inputreader.read(c);
        inputreader.close();
        System.out.println(new String(c,0,len));        
    }

}

Wirter類(字符輸出類)

結構

這裡寫圖片描述

基本方法
Wirter類使用子類FileWriter向文件中寫入內容
Wirter類的定義:
public abstract class Writer extends Object implements Appendable,Closeable,Flushable

FileWriter類的構造方法

public FileWriter(File file)throws IOException

寫文件:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class Test16 {
    public static void main(String[] args) throws IOException {
    File f = new File("d:" + File.separator+"test.txt");
    Writer out=new FileWriter(f);
    String str="Hello World";
    out.write(str);
    out.close();
    }
}

總結

目前對於這些內容還只是概念上的理解,沒有再具體實例中看到,也沒有具體實踐,後面繼續!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved