Java 演示如何用標準的輸入輸出流重定向到一個文件
阿新 • • 發佈:2018-02-04
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()
關閉此輸入流並釋放與該流關聯的所有系統資源 void flush()
刷新此輸出流並強制寫出所有緩沖的輸出字節
void close()
關閉此輸出流並釋放與該流關聯的所有系統資源
IO流位於java.io包中,根據操作數據不同,分為字節流和字符流;根據數據輸入方面的不同又可分為輸入流和輸出流,無論是何種流,最終都依賴於操作系統。
一、字節流:
1、字節流,主要用於圖片、音頻、視頻的傳輸,以二進制的形式進行,分為字節輸入流和字節輸出流;字節流操作的是字節數組;字符流操作的是字符數組。
2、字節輸入與字節輸出流的繼承體系圖
InputStream 常用方法
方法聲明
功能描述
int read()
從輸入流讀取一個8位的字節,把它轉換為0-255之間的整數,並返回這一整數
int read(byte[] 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 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 演示如何用標準的輸入輸出流重定向到一個文件