1. 程式人生 > >Java 演示如何用標準的輸入輸出流重定向到一個文件

Java 演示如何用標準的輸入輸出流重定向到一個文件

sys fileread off 進行 log idea blog 效率 dir

最近,在學習Java,並且學習到了Java的IO(輸入與輸入),什麽是Java IO呢?
 IO流位於java.io包中,根據操作數據不同,分為字節流和字符流;根據數據輸入方面的不同又可分為輸入流和輸出流,無論是何種流,最終都依賴於操作系統。
一、字節流:
1、字節流,主要用於圖片、音頻、視頻的傳輸,以二進制的形式進行,分為字節輸入流和字節輸出流;字節流操作的是字節數組;字符流操作的是字符數組。
2、字節輸入與字節輸出流的繼承體系圖
技術分享圖片
InputStream 常用方法
方法聲明
功能描述
int read()
從輸入流讀取一個8位的字節,把它轉換為0-255之間的整數,並返回這一整數
int read(byte[] b)
從輸入流讀取若幹字節,把它們保存到參數b指定的字節數組中,返回的整數表示讀取的字節數
int read(byte[] b,int off,len)
從輸入流讀取若幹字節,把它們保存到參數b指定的字節數組中,off指定字節數組開始保存數據的起始下標,len表示讀取的字節
void close()
關閉此輸入流並釋放與該流關聯的所有系統資源

OutputStream 常用方法
方法聲明
功能描述
void write(int b)
向輸出流寫入一個字節
void write(byte[] b)
把參數b指定的字節數組的所有字節寫到輸出流
void write(byte[] b,int off,len)
將指定byte數組中從偏移量off開始的len個字節寫入輸出流

void flush()
刷新此輸出流並強制寫出所有緩沖的輸出字節
void close()
關閉此輸出流並釋放與該流關聯的所有系統資源

字節流讀寫文件:
  FileInputStream 是操作文件的的字節輸入流,專門用於讀取文件中的數據。
  FileOutputStream是操作文件的的字節輸出流,專門用於把數據寫入文件。

其代碼如下:

package Redirecting;

import java.io.*;

public class Redirecting {
    public static void main(String[] args) throws IOException {
        PrintStream console = System.out;
        BufferedInputStream in = new BufferedInputStream(new FileInputStream("/Users/mac/IdeaProjects/JF_Java_EDU/src/Redirecting/Redirecting.java"));
        PrintStream out = new PrintStream(new BufferedOutputStream(new FileOutputStream("outtest.txt")));

        System.setIn(in);
        System.setOut(out);
        System.setErr(out);

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s;
        while ((s = br.readLine()) != null)
            System.out.println(s);
                out.println(s);
        out.close();
        System.setOut(console);
    }
}

FileReader 和FileWriter 用於讀寫文件;BufferedReader 和BufferdeWriter是具有緩沖功能的流,可以提高讀寫效率。

BufferedReader中有一重要的方法readLind(),該方法用於一次讀取一行文本。

轉換流是一種字符流,只能實現字節流讀寫文本數據的時候,通過轉換流來使用字符高效流的方法。而不能實現圖片、音頻等數據的讀寫。
InputStreamReader:理解上是字節流通向字符流的橋梁,使用上為:
 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
OutputStreamWriter:理解上是字符流通向字節流的橋梁,使用上還是通過字節流轉成字符流:
BufferedWriter bw = new BufferedWriter (new OutputStreamWriter(System.out));

最終的輸出結果,把你的代碼輸出到文本文檔,如下:
技術分享圖片

Java 演示如何用標準的輸入輸出流重定向到一個文件