牛客網Java刷題知識點之輸入流、輸出流、字節流、字符流、字節流的抽象基類(InputStream、OutputStream)、字符流的抽象基類(Reader、Writer)、FileWriter、F

 

 

 

  很少說,直接上乾貨!java

 

 

   IO流用來處理設備之間的數據傳輸。數組

  java對數據的操做是經過流的方式。函數

  java用於操做流的對象都在IO包中。編碼

  IO流按操做數據分爲兩種:字節流和字符流spa

  IO流按流向分爲:輸入流、輸出流3d

 

 

 

 

 

 

 

 

輸入流和輸出流code

輸入流作什麼事: 將硬盤中的數據出來,放到內存裏去運算。對象

輸出流作什麼事:將內存中的數據,到硬盤裏去。blog

  輸入流和輸出流相對於內存設備而言。內存

  將外設中的數據讀取到內存中:輸入。
  將內存的數寫入到外設中:輸出。

 

 

往內存裏,就是輸入流
輸入流作什麼事: 將硬盤中的數據讀出來,放到內存裏去運算。
從內存出,就是輸出流。
輸出流作什麼事:將內存中的數據,寫到硬盤裏去。 
 
 

 

 

 

 

 

 

字節流和字符流

字符流的由來:
  其實就是:字節流讀取文字字節數據後,不直接操做而是先查指定的編碼表。獲取對應的文字。
  在對這個文字進行操做。簡單說:字節流+編碼表。

 

 

字節流的抽象基類:  

  InputStream、OutputStream

 

 

字符流的抽象基類:

  Reader、Writer

建立一個能夠往文件(由於是在磁盤)中寫入字符數據的字符輸出流對象。(由於是對內存而言,是取出,因此是輸出流)

 

注意:由這四個類派生出來的子類名稱都是以其父類名做爲子類名的後綴。

  如InputStream的子類FileInputStream。

    如Reader的子類FileReader。

  如Writer的子類FileWriter。

 

字節流:
  FileInputStream
  FileOutputStream
  BufferedInputStream
  BufferedOutputStream


字符流:
  Writer Reader
  FileReader
  FileWriter
  BufferedReader
  BufferedWriter

 

 

 

 

字符流FileWriter

 FileWriterDemo.java

 

 

 

 

 

 

 

 FileWriterDemo.java(涉及到換行和續寫)

package zhouls.bigdata.DataFeatureSelection.test;

import java.io.FileWriter;
import java.io.IOException;

//需求:將一些文字存儲到硬盤一個文件中。

public class FileWriterDemo {
    private static final String LINE_SEPARATOR = System.getProperty("line.separator");
    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        //建立一個能夠往文件中寫入字符數據的字符輸出流對象。
        /*
         * 既然是往一個文件中寫入文字數據,那麼在建立對象時,就必須明確該文件(用於存儲數據的目的地)。
         * 若是文件不存在,則會自動建立。
         * 若是文件存在,則會被覆蓋。
         * 若是構造函數中加入true,能夠實現對文件進行續寫*/
        FileWriter fw = new FileWriter("demo.txt",true);
        /*
         * 調用Writer對象中的write(string)方法,寫入數據。 
         * 其實數據寫入到臨時存儲緩衝區中。
         */
        fw.write("abcde"+LINE_SEPARATOR+"hahaha");//LINE_SEPARATOR是換行符
        fw.write("xixi");
        
        //進行刷新,將數據直接寫到目的地中。    注意:flush能夠用屢次。
        fw.flush();
        
        //關閉流,關閉資源。在關閉前會先調用flush刷新緩衝中的數據到目的地。        注意:close能夠用屢次。
        fw.close();
    }
}

 

 

 

 

 

 

 

FileWriter的IO異常處理

 

 

 IOExceptionDemo.java

package zhouls.bigdata.DataFeatureSelection.test;

import java.io.FileWriter;
import java.io.IOException;

public class IOExceptionDemo {
    private static final String LINE_SEPARATOR = System
            .getProperty("line.separator");
    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) {
        FileWriter fw = null;
        try {
            fw = new FileWriter("demo.txt");
            fw.write("abcde" + LINE_SEPARATOR + "hahaha");
        } catch (IOException e) {
            System.out.println(e.toString());
        } finally {
            if (fw != null) try { fw.close(); } catch (IOException e) { // code.... throw new RuntimeException("關閉失敗"); }
        }
    }
}

 

 

 

 

 

 

 

 字符流FileReader

  讀取方式

 

 

 

 

FileReaderDemo.java

package zhouls.bigdata.DataFeatureSelection.test;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

//需求:讀取一個文本文件。將讀取到的字符打印到控制檯.

public class FileReaderDemo {
    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        //1,建立讀取字符數據的流對象。
        //在建立讀取流對象時,必需要明確被讀取的文件。必定要肯定該文件是存在的。 
        //用一個讀取流關聯一個已存在文件。 
        FileReader fr = new FileReader("demo.txt");
        int ch = 0;
        while((ch=fr.read())!=-1){
            System.out.println((char)ch);
        }
        fr.close();
    }

}

 

 

 

 

   也能夠這樣來進行讀取

 

 

 FileReaderDemo.java

package zhouls.bigdata.DataFeatureSelection.test;

import java.io.FileReader;
import java.io.IOException;

//需求:讀取一個文本文件。將讀取到的字符打印到控制檯.

public class FileReaderDemo{
    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        FileReader fr = new FileReader("demo.txt");
         //使用read(char[])讀取文本文件數據。
         //先建立字符數組。
        char[] buf = new char[1024];
        int len = 0;
        while((len=fr.read(buf))!=-1){
            System.out.println(new String(buf,0,len));
        }
        fr.close();
    }
}
相關文章
相關標籤/搜索