Java燒腦驢遊(十四)--流(Stream)、檔案(File)和IO
Java.io包幾乎包含了所有操作輸入、輸出需要的類。所有這些流類代表了輸入源和輸出目標。
Java.io包中的流支援很多種格式,比如:基本型別、物件、本地化字符集等等。
一個流可以理解為一個數據的序列。輸入流表示從一個源讀取資料,輸出流表示向一個目標寫資料。
讀取控制檯輸入
Java的控制檯輸入由System.in完成。
為了獲得一個繫結到控制檯的字元流,你可以把System.in包裝在一個BufferedReader 物件中來建立一個字元流。
下面是建立BufferedReader的基本語法:
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
BufferedReader物件建立後,我們便可以使用read()方法從控制檯讀取一個字元,或者用readLine()方法讀取一個字串。
從控制檯讀取多字元輸入
每次呼叫read()方法,它從輸入流讀取一個字元並把該字元作為整數值返回。 當流結束的時候返回-1。該方法丟擲IOException。
下面的程式示範了用read()方法從控制檯不斷讀取字元直到使用者輸入”q”。
// 使用 BufferedReader 在控制檯讀取字元
import java.io.*;
public class BRRead {
public static void main(String args[]) throws IOException
{
char c;
// 使用 System.in 建立 BufferedReader
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
System.out.println("Enter characters, 'q' to quit.");
// 讀取字元
do {
c = (char) br.read();
System.out.println(c);
} while (c != 'q');
}
}
從控制檯讀取字串
從標準輸入讀取一個字串需要使用BufferedReader的readLine()方法。
下面的程式讀取和顯示字元行直到你輸入了單詞”end”。
// 使用 BufferedReader 在控制檯讀取字元
import java.io.*;
public class BRReadLines {
public static void main(String args[]) throws IOException
{
// 使用 System.in 建立 BufferedReader
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
String str;
System.out.println("Enter lines of text.");
System.out.println("Enter 'end' to quit.");
do {
str = br.readLine();
System.out.println(str);
} while(!str.equals("end"));
}
}
控制檯輸出
在此前已經介紹過,控制檯的輸出由 print( ) 和println( )完成。這些方法都由類PrintStream 定義,System.out是該類物件的一個引用。
PrintStream 繼承了OutputStream類,並且實現了方法write()。這樣,write()也可以用來往控制檯寫操作。
下面的例子用write()把字元”A”和緊跟著的換行符輸出到螢幕:
import java.io.*;
// 演示 System.out.write().
public class WriteDemo {
public static void main(String args[]) {
int b;
b = 'A';
System.out.write(b);
System.out.write('\n');
}
}
讀寫檔案
如前所述,一個流被定義為一個數據序列。輸入流用於從源讀取資料,輸出流用於向目標寫資料。
下圖是一個描述輸入流和輸出流的類層次圖。
FileInputStream
該流用於從檔案讀取資料,它的物件可以用關鍵字new來建立。
有多種構造方法可用來建立物件。
可以使用字串型別的檔名來建立一個輸入流物件來讀取檔案:
InputStream f = new FileInputStream(“C:/java/hello”);
也可以使用一個檔案物件來建立一個輸入流物件來讀取檔案。我們首先得使用File()方法來建立一個檔案物件:
File f = new File(“C:/java/hello”);
InputStream f = new FileInputStream(f);
FileOutputStream
該類用來建立一個檔案並向檔案中寫資料。
如果該流在開啟檔案進行輸出前,目標檔案不存在,那麼該流會建立該檔案。
有兩個構造方法可以用來建立FileOutputStream 物件。
使用字串型別的檔名來建立一個輸出流物件:
OutputStream f = new FileOutputStream(“C:/java/hello”)
也可以使用一個檔案物件來建立一個輸出流來寫檔案。我們首先得使用File()方法來建立一個檔案物件:
File f = new File(“C:/java/hello”);
OutputStream f = new FileOutputStream(f);
例項
下面是一個演示InputStream和OutputStream用法的例子:
package Test;
import java.io.*;
/*
* FileOutputStream
該類用來建立一個檔案並向檔案中寫資料。
如果該流在開啟檔案進行輸出前,目標檔案不存在,那麼該流會建立該檔案。
有兩個構造方法可以用來建立FileOutputStream 物件。
(1)使用字串型別的檔名來建立一個輸出流物件:
OutputStream f = new FileOutputStream("C:/java/hello")
(2)也可以使用一個檔案物件來建立一個輸出流來寫檔案。我們首先得使用File()方法來建立一個檔案物件:
File f = new File("C:/java/hello");
OutputStream f = new FileOutputStream(f);
*/
public class fileStreamTest {
public static void main(String[] args) throws IOException {
File f = new File("a.txt");
FileOutputStream fop = new FileOutputStream(f);
// 構建FileOutputStream物件,檔案不存在會自動新建
OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
// 構建OutputStreamWriter物件,引數可以指定編碼,預設為作業系統預設編碼,windows上是gbk
writer.append("中文輸入");
// 寫入到緩衝區
writer.append("\r\n");
//換行
writer.append("English");
// 重新整理快取衝,寫入到檔案,如果下面已經沒有寫入的內容了,直接close也會寫入
writer.close();
//關閉寫入流,同時會把緩衝區內容寫入檔案,所以上面的註釋掉
fop.close();
// 關閉輸出流,釋放系統資源
FileInputStream fip = new FileInputStream(f);
// 構建FileInputStream物件
InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
// 構建InputStreamReader物件,編碼與寫入相同
StringBuffer sb = new StringBuffer();
while (reader.ready()) {
sb.append((char) reader.read());
// 轉成char加到StringBuffer物件中
}
System.out.println(sb.toString());
reader.close();
// 關閉讀取流
fip.close();
// 關閉輸入流,釋放系統資源
}
}
新浪微博:Hanrovey
163郵箱 : [email protected]
相關推薦
Java燒腦驢遊(十四)--流(Stream)、檔案(File)和IO
Java.io包幾乎包含了所有操作輸入、輸出需要的類。所有這些流類代表了輸入源和輸出目標。 Java.io包中的流支援很多種格式,比如:基本型別、物件、本地化字符集等等。 一個流可以理解為一個數據的序列。輸入流表示從一個源讀取資料,輸出流表示向一個目標寫資料
Java基礎鞏固(四)-流(Stream)、檔案(File)和IO
Java流(Stream)、檔案(File)和IO Java.io 包幾乎包含了所有操作輸入、輸出需要的類。所有這些流類代表了輸入源和輸出目標。 Java.io 包中的流支援很多種格式,比如:基本型別、物件、本地化字符集等等。 一個流可以理解為一個數據的序列。輸入流表示從一個源讀取資
JAVA學習記錄(三)——Java 流(Stream)、檔案(File)和IO
簡介 Java.io包幾乎包含了所有操作輸入、輸出需要的類。所有這些流類代表了輸入源和輸出目標。 Java.io包中的流支援很多種格式,比如:基本型別、物件、本地化字符集等等。 一個流可以理解為一個數據的序列。輸入流表示從一
20180803-Java 流(Stream)、檔案(File)和IO
Java 流(Stream)、檔案(File)和IO 下面的程式示範了用read()方法從控制檯不斷讀取字元直到使用者輸入"q"。 // 使用BufferedReader 在控制檯讀取字元 import java.io.* public class BRRead{pub
Java—— 流(Stream)、檔案(File)和IO
參考於:https://blog.csdn.net/qq_22063697/article/details/52137369 版權宣告:本文為博主原創文章,轉載請附上博文連結! 一. 什麼是 IO Java中 I/O 操作主要是指使用 Java 進行輸入,輸出操作
《瘋狂Java講義》學習筆記(十四)類載入機制與反射
1、類的載入、連線和初始化 JVM和類 同一個JVM的所有執行緒、所有變數都處於同一個程序裡,它們都使用該JVM程序的記憶體區 當系統出現一下集中情況時,JVM程序將被終止: 程式執行到最後正常結束 程式執行到使用Sytem.exit()或Runti
Java從入門到放棄(十四)集合框架之TreeMap原始碼
我們經常需要對一些集合按照指定的規則進行排序,比如學生按照學號排序,或者按照成績排序,集合裡面有專門排序的集合,如TreeMap。TreeMap裡面是使用的紅黑樹結構。 構造方法 private final Comparator<? su
Linux學習筆記(十四)df命令、du命令、磁盤分區
xtend du -sh image c2c 浪費 code 服務 分享 bdc 一、df #查看文件系統的使用情況第一列文件系統中tmpfs結尾的都是臨時的文件系統,文件單位默認為kb df -h 自動適應文件大小的單位free可以查看swap的使用情況 df -i 查看
opencv學習(十四)之影象顏色通道分離和融合
在影象處理時,我們接觸到的彩色以RGB居多,為了分析影象在某一通道上的特性,需要將影象的顏色通道進行分離,或者是在對某一顏色通道處理後重新進行融合。opencv提供了split()函式來進行顏色通道的分離,提供了merge()函式來進行顏色通道的融合。 1.s
作業系統清華大學版筆記(十一)死鎖、銀行家演算法和程序間通訊(直接通訊、間接通訊)
死鎖、死鎖模型、死鎖預防和恢復、銀行家演算法 死鎖:一組阻塞的程序(兩個或多個),持有一種資源,等待獲取另一個程序所佔有的資源,而導致誰都無法執行。 由於程序的併發執行引起了死鎖。 死鎖模型 資源型別很多,比如CPU cycles , mem
Java學習記錄(補充八:Date類;Java流(Stream),文件(File)和IO)
tac hang set .get com 文件 pac 抽象類 格式化 Date類,Calendar類package Box1; import java.text.ParseException; import java.text.SimpleDateFormat; i
Java框架spring Boot學習筆記(十四):log4j介紹
inf alt 技術分享 images 使用 image 詳細 配置文件 -128 功能 日誌功能,通過log4j可以看到程序運行過程的詳細信息。 使用 導入log4j的jar包 復制log4j的配置文件,復制到src下面 3.設置日誌級別
Java學習總結(十四)——java反射機制,利用反射動態創建對象
Java反射 動態創建對象 一.Java反射機制1.什麽是反射:反射就是把Java類中的各種成份影射成一個個的Java對象。例:一個類有:成員變量,方法,構造方法等,包等等信息,利用反射技術可以對一個類進行剖析,把各個組成部分影射成一個個對象。2.Java反射常用類:(1)Class類—可獲取類和類的
java程式設計師菜鳥進階(十四)linux基礎入門(二)linux檔案及目錄命令管理
大家都知道,熟悉命令操作的開發人員,Linux作業系統命令操作效率要高於圖形介面的操作,所以瞭解和學習linux基本命令操作是學習linux作業系統的首要任務,本文主要介紹以下四個知識點: 1. She
java基礎學習總結(十四):Enum 型別的使用介紹
一、Enum 型別的介紹 列舉型別(Enumerated Type) 很早就出現在程式語言中,它被用來將一組類似的值包含到一種型別當中。而這種列舉型別的名稱則會被定義成獨一無二的型別描述符,在這一點上和常量的定義相似。不過相比較常量型別,列舉型別可以為宣告的變
Java程式設計師從笨鳥到菜鳥之(十四)Html基礎總結(上)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Java開發筆記(十四)幾種運算子的優先順序順序
到目前為止,我們已經學習了Java語言的好幾種運算子,包括算術運算子、賦值運算子、邏輯運算子、關係運算符等基礎運算子,並且在書寫賦值語句時都沒新增圓括號,顯然是默認了先完成算術、邏輯、關係等運算,最後才進行賦值操作。也就是說,在這四類運算子當中,賦值運算子的優先順序最低,那麼其他三種運算
安全程式設計(十四)- Java中throw和throws的區別
1.粗淺來說 throw是一個語句丟擲異常,throws是一個方法丟擲異常; throw不是和try-catch-finally配套使用就是和throws配套使用,而throws可
資料結構的Java實現(十四)—— 圖
1、圖的定義 圖通常有個固定的形狀,這是由物理或抽象的問題所決定的。比如圖中節點表示城市,而邊可能表示城市間的班機航線。如下圖是美國加利福利亞簡化的高速公路網: ①、鄰接:如果兩個頂點被同一條邊連線,就稱這兩個頂點是鄰接的。如上圖 I 和 G 就是鄰接的,而
(十四)Java springcloud B2B2C o2o多用戶商城 springcloud架構
數據庫 mvc 路由 col mys 消息總線 pro 彈性 http 通過Spring Cloud構建PC+微信+APP+雲服務的雲商平臺系統,其中包括B2B、B2C、C2C、O2O、新零售、直播電商等子平臺,之前我們講了很多關於Spring Cloud的概念文章,從本節