Java字節(jié)緩存流的構(gòu)造方法之文件IO流
前言:
我們從上篇文章開始給大家介紹Java中IO流的相關(guān)知識,本文接著上文的內(nèi)容,接續(xù)給大家介紹Java文件的讀入讀出流。
1.字節(jié)緩沖流
1.1字節(jié)緩沖流構(gòu)造方法
- 字節(jié)緩沖流介紹
- ?
?lBufferOutputStream??:該類實現(xiàn)緩沖輸出流。 通過設(shè)置這樣的輸出流,應(yīng)用程序可以向底層輸出流寫入字節(jié),而不必為寫入的每個字節(jié)導致底層系統(tǒng)的調(diào)用 - ?
?lBufferedInputStream???:創(chuàng)建??BufferedInputStream??將創(chuàng)建一個內(nèi)部緩沖區(qū)數(shù)組。 當從流中讀取或跳過字節(jié)時,內(nèi)部緩沖區(qū)將根據(jù)需要從所包含的輸入流中重新填充,一次很多字節(jié)。
- 構(gòu)造方法:

- 示例代碼
public class BufferStreamDemo {
public static void main(String[] args) throws IOException {
//字節(jié)緩沖輸出流:BufferedOutputStream(OutputStream out)
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("myByteStream\\bos.txt"));
//寫數(shù)據(jù)
bos.write("hello\r\n".getBytes());
bos.write("world\r\n".getBytes());
//釋放資源
bos.close();
//字節(jié)緩沖輸入流:BufferedInputStream(InputStream in)
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("myByteStream\\bos.txt"));
//一次讀取一個字節(jié)數(shù)組數(shù)據(jù)
byte[] bys = new byte[1024];
int len;
while ((len=bis.read(bys))!=-1) {
System.out.print(new String(bys,0,len));
}
//釋放資源
bis.close();
}
}大家在運行該代碼的時候,將相應(yīng)的各種包導進去,另外將代碼里面相應(yīng)的路徑換成讀者自己的,代碼就可以完美運行了,可以看看其效果。
1.2字節(jié)流復制視頻
- 案例需求
把“E:\\yijizhichang\\字節(jié)流復制圖片.avi”復制到模塊目錄下的“字節(jié)流復制圖片.avi”
- 實現(xiàn)步驟
- 根據(jù)數(shù)據(jù)源創(chuàng)建字節(jié)輸入流對象
- 根據(jù)目的地創(chuàng)建字節(jié)輸出流對象
- 讀寫數(shù)據(jù),復制視頻
- 釋放資源
- 代碼實現(xiàn)
public class CopyAviDemo {
public static void main(String[] args) throws IOException {
//記錄開始時間
long startTime = System.currentTimeMillis();
//記錄結(jié)束時間
long endTime = System.currentTimeMillis();
System.out.println("共耗時:" + (endTime - startTime) + "毫秒");
}
//字節(jié)緩沖流一次讀寫一個字節(jié)數(shù)組
public static void method4() throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:\\yijizhichang\\字節(jié)流復制圖片.avi"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("myByteStream\\字節(jié)流復制圖片.avi"));
byte[] bys = new byte[1024];
int len;
while ((len=bis.read(bys))!=-1) {
bos.write(bys,0,len);
}
bos.close();
bis.close();
}
//字節(jié)緩沖流一次讀寫一個字節(jié)
public static void method3() throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:\\yijizhichang\\字節(jié)流復制圖片.avi"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("myByteStream\\字節(jié)流復制圖片.avi"));
int by;
while ((by=bis.read())!=-1) {
bos.write(by);
}
bos.close();
bis.close();
}
//基本字節(jié)流一次讀寫一個字節(jié)數(shù)組
public static void method2() throws IOException {
//E:\\yijizhichang\\字節(jié)流復制圖片.avi
//模塊目錄下的 字節(jié)流復制圖片.avi
FileInputStream fis = new FileInputStream("E:\\yijizhichang\\字節(jié)流復制圖片.avi");
FileOutputStream fos = new FileOutputStream("myByteStream\\字節(jié)流復制圖片.avi");
byte[] bys = new byte[1024];
int len;
while ((len=fis.read(bys))!=-1) {
fos.write(bys,0,len);
}
fos.close();
fis.close();
}
//基本字節(jié)流一次讀寫一個字節(jié)
public static void method1() throws IOException {
//E:\\yijizhichang\\字節(jié)流復制圖片.avi
//模塊目錄下的 字節(jié)流復制圖片.avi
FileInputStream fis = new FileInputStream("E:\\yijizhichang\\字節(jié)流復制圖片.avi");
FileOutputStream fos = new FileOutputStream("myByteStream\\字節(jié)流復制圖片.avi");
int by;
while ((by=fis.read())!=-1) {
fos.write(by);
}
fos.close();
fis.close();
}
}2.字符流
2.1為什么會出現(xiàn)字符流
- 字符流的介紹
由于字節(jié)流操作中文不是特別的方便,所以Java就提供字符流
字符流 = 字節(jié)流 + 編碼表
- 中文的字節(jié)存儲方式
用字節(jié)流復制文本文件時,文本文件也會有中文,但是沒有問題,原因是最終底層操作會自動進行字節(jié)拼接成中文,如何識別是中文的呢?
漢字在存儲的時候,無論選擇哪種編碼存儲,第一個字節(jié)都是負數(shù)
2.2編碼表
- 什么是字符集
是一個系統(tǒng)支持的所有字符的集合,包括各國家文字、標點符號、圖形符號、數(shù)字等
l計算機要準確的存儲和識別各種字符集符號,就需要進行字符編碼,一套字符集必然至少有一套字符編碼。常見字符集有ASCII字符集、GBXXX字符集、Unicode字符集等
- 常見的字符集
- ASCII字符集:
lASCII:是基于拉丁字母的一套電腦編碼系統(tǒng),用于顯示現(xiàn)代英語,主要包括控制字符(回車鍵、退格、換行鍵等)和可顯示字符(英文大小寫字符、阿拉伯數(shù)字和西文符號)
基本的ASCII字符集,使用7位表示一個字符,共128字符。ASCII的擴展字符集使用8位表示一個字符,共256字符,方便支持歐洲常用字符。是一個系統(tǒng)支持的所有字符的集合,包括各國家文字、標點符號、圖形符號、數(shù)字等
- GBXXX字符集:
GBK:最常用的中文碼表。是在GB2312標準基礎(chǔ)上的擴展規(guī)范,使用了雙字節(jié)編碼方案,共收錄了21003個漢字,完全兼容GB2312標準,同時支持繁體漢字以及日韓漢字等
- Unicode字符集:
UTF-8編碼:可以用來表示Unicode標準中任意字符,它是電子郵件、網(wǎng)頁及其他存儲或傳送文字的應(yīng)用 中,優(yōu)先采用的編碼?;ヂ?lián)網(wǎng)工程工作小組(IETF)要求所有互聯(lián)網(wǎng)協(xié)議都必須支持UTF-8編碼。它使用一至四個字節(jié)為每個字符編碼
編碼規(guī)則:
128個US-ASCII字符,只需一個字節(jié)編碼
拉丁文等字符,需要二個字節(jié)編碼
大部分常用字(含中文),使用三個字節(jié)編碼
其他極少使用的Unicode輔助字符,使用四字節(jié)編碼
2.3字符串中的編碼解碼問題
- 相關(guān)方法

- 代碼演示
public class StringDemo {
public static void main(String[] args) throws UnsupportedEncodingException {
//定義一個字符串
String s = "中國";
byte[] bys = s.getBytes("GBK"); //[-42, -48, -71, -6]
System.out.println(Arrays.toString(bys));
String ss = new String(bys,"GBK");
System.out.println(ss);
}
}2.4字符流中的編碼解碼問題
- 字符流中和編碼解碼問題相關(guān)的兩個類
- ?
?InputStreamReader??:是從字節(jié)流到字符流的橋梁
它讀取字節(jié),并使用指定的編碼將其解碼為字符
它使用的字符集可以由名稱指定,也可以被明確指定,或者可以接受平臺的默認字符集
- OutputStreamWriter:是從字符流到字節(jié)流的橋梁
是從字符流到字節(jié)流的橋梁,使用指定的編碼將寫入的字符編碼為字節(jié)
它使用的字符集可以由名稱指定,也可以被明確指定,或者可以接受平臺的默認字符集
- 構(gòu)造方法

- 代碼演示
public class ConversionStreamDemo {
public static void main(String[] args) throws IOException {
//OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("myCharStream\\osw.txt"));
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("myCharStream\\osw.txt"),"GBK");
osw.write("中國");
osw.close();
//InputStreamReader isr = new InputStreamReader(new FileInputStream("myCharStream\\osw.txt"));
InputStreamReader isr = new InputStreamReader(new FileInputStream("myCharStream\\osw.txt"),"GBK");
//一次讀取一個字符數(shù)據(jù)
int ch;
while ((ch=isr.read())!=-1) {
System.out.print((char)ch);
}
isr.close();
}
}2.5字符流寫數(shù)據(jù)的5種方式
- 方法介紹

- 刷新和關(guān)閉的方法

- 代碼演示
public class OutputStreamWriterDemo {
public static void main(String[] args) throws IOException {
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("myCharStream\\osw.txt"));
char[] chs = {'a', 'b', 'c', 'd', 'e'};
osw.write("abcde", 1, 3);
//釋放資源
osw.close();
}
}2.6字符流讀數(shù)據(jù)的2種方式
- 方法介紹

- 代碼演示
public class InputStreamReaderDemo {
public static void main(String[] args) throws IOException {
InputStreamReader isr = new InputStreamReader(new FileInputStream("myCharStream\\ConversionStreamDemo.java"));
char[] chs = new char[1024];
int len;
while ((len = isr.read(chs)) != -1) {
System.out.print(new String(chs, 0, len));
}
//釋放資源
isr.close();
}
}2.7字符流復制Java文件
- 案例需求
把模塊目錄下的“?
?ConversionStreamDemo.java???” 復制到模塊目錄下的“??Copy.java??”
- 實現(xiàn)步驟
- 根據(jù)數(shù)據(jù)源創(chuàng)建字符輸入流對象
- 根據(jù)目的地創(chuàng)建字符輸出流對象
- 讀寫數(shù)據(jù),復制文件
- 釋放資源
- 代碼實現(xiàn)
public class CopyJavaDemo01 {
public static void main(String[] args) throws IOException {
//根據(jù)數(shù)據(jù)源創(chuàng)建字符輸入流對象
InputStreamReader isr = new InputStreamReader(new FileInputStream("myCharStream\\ConversionStreamDemo.java"));
//根據(jù)目的地創(chuàng)建字符輸出流對象
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("myCharStream\\Copy.java"));
//讀寫數(shù)據(jù),復制文件
//一次讀寫一個字符數(shù)組數(shù)據(jù)
char[] chs = new char[1024];
int len;
while ((len=isr.read(chs))!=-1) {
osw.write(chs,0,len);
}
//釋放資源
osw.close();
isr.close();
}
}2.8字符流復制Java文件改進版
- 案例需求
使用便捷流對象,把模塊目錄下的“?
?ConversionStreamDemo.java???” 復制到模塊目錄下的“??Copy.java??”
- 實現(xiàn)步驟
- 根據(jù)數(shù)據(jù)源創(chuàng)建字符輸入流對象
- 根據(jù)目的地創(chuàng)建字符輸出流對象
- 讀寫數(shù)據(jù),復制文件
- 釋放資源
- 代碼實現(xiàn)
public class CopyJavaDemo02 {
public static void main(String[] args) throws IOException {
//根據(jù)數(shù)據(jù)源創(chuàng)建字符輸入流對象
FileReader fr = new FileReader("myCharStream\\ConversionStreamDemo.java");
//根據(jù)目的地創(chuàng)建字符輸出流對象
FileWriter fw = new FileWriter("myCharStream\\Copy.java");
char[] chs = new char[1024];
int len;
while ((len=fr.read(chs))!=-1) {
fw.write(chs,0,len);
}
//釋放資源
fw.close();
fr.close();
}
}2.9字符緩沖流
- 字符緩沖流介紹
- ?
?BufferedWriter??:將文本寫入字符輸出流,緩沖字符,以提供單個字符,數(shù)組和字符串的高效寫入,可以指定緩沖區(qū)大小,或者可以接受默認大小。默認值足夠大,可用于大多數(shù)用途 - ?
?BufferedReader??:從字符輸入流讀取文本,緩沖字符,以提供字符,數(shù)組和行的高效讀取,可以指定緩沖區(qū)大小,或者可以使用默認大小。 默認值足夠大,可用于大多數(shù)用途
- ?
- 構(gòu)造方法

- 代碼演示
public class BufferedStreamDemo01 {
public static void main(String[] args) throws IOException {
//BufferedWriter(Writer out)
BufferedWriter bw = new BufferedWriter(new FileWriter("myCharStream\\bw.txt"));
bw.write("hello\r\n");
bw.write("world\r\n");
bw.close();
//BufferedReader(Reader in)
BufferedReader br = new BufferedReader(new FileReader("myCharStream\\bw.txt"));
//一次讀取一個字符數(shù)據(jù)
//一次讀取一個字符數(shù)組數(shù)據(jù)
char[] chs = new char[1024];
int len;
while ((len=br.read(chs))!=-1) {
System.out.print(new String(chs,0,len));
}
br.close();
}
}2.10字符緩沖流復制Java文件
- 案例需求
把模塊目錄下的?
?ConversionStreamDemo.java??? 復制到模塊目錄下的?? Copy.java??
- 實現(xiàn)步驟
- 根據(jù)數(shù)據(jù)源創(chuàng)建字符緩沖輸入流對象
- 根據(jù)目的地創(chuàng)建字符緩沖輸出流對象
- 讀寫數(shù)據(jù),復制文件,使用字符緩沖流特有功能實現(xiàn)
- 釋放資源
- 代碼實現(xiàn)
public class CopyJavaDemo01 {
public static void main(String[] args) throws IOException {
//根據(jù)數(shù)據(jù)源創(chuàng)建字符緩沖輸入流對象
BufferedReader br = new BufferedReader(new FileReader("myCharStream\\ConversionStreamDemo.java"));
//根據(jù)目的地創(chuàng)建字符緩沖輸出流對象
BufferedWriter bw = new BufferedWriter(new FileWriter("myCharStream\\Copy.java"));
//一次讀寫一個字符數(shù)組數(shù)據(jù)
char[] chs = new char[1024];
int len;
while ((len=br.read(chs))!=-1) {
bw.write(chs,0,len);
}
//釋放資源
bw.close();
br.close();
}
}2.11字符緩沖流特有功能
- 方法介紹
BufferedWriter:

- 代碼演示
public class BufferedStreamDemo02 {
public static void main(String[] args) throws IOException {
//創(chuàng)建字符緩沖輸出流
BufferedWriter bw = new BufferedWriter(new FileWriter("myCharStream\\bw.txt"));
//寫數(shù)據(jù)
for (int i = 0; i < 10; i++) {
bw.write("hello" + i);
//bw.write("\r\n");
bw.newLine();
bw.flush();
}
//釋放資源
bw.close();
//創(chuàng)建字符緩沖輸入流
BufferedReader br = new BufferedReader(new FileReader("myCharStream\\bw.txt"));
String line;
while ((line=br.readLine())!=null) {
System.out.println(line);
}
br.close();
}
}2.12字符緩沖流特有功能復制Java文件
- 案例需求
使用特有功能把模塊目錄下的ConversionStreamDemo.java 復制到模塊目錄下的?
? Copy.java??
- 實現(xiàn)步驟
- 根據(jù)數(shù)據(jù)源創(chuàng)建字符緩沖輸入流對象
- 根據(jù)目的地創(chuàng)建字符緩沖輸出流對象
- 讀寫數(shù)據(jù),復制文件,使用字符緩沖流特有功能實現(xiàn)
- 釋放資源
- 代碼實現(xiàn)
public class CopyJavaDemo02 {
public static void main(String[] args) throws IOException {
//根據(jù)數(shù)據(jù)源創(chuàng)建字符緩沖輸入流對象
BufferedReader br = new BufferedReader(new FileReader("myCharStream\\ConversionStreamDemo.java"));
//根據(jù)目的地創(chuàng)建字符緩沖輸出流對象
BufferedWriter bw = new BufferedWriter(new FileWriter("myCharStream\\Copy.java"));
//讀寫數(shù)據(jù),復制文件
//使用字符緩沖流特有功能實現(xiàn)
String line;
while ((line=br.readLine())!=null) {
bw.write(line);
bw.newLine();
bw.flush();
}
//釋放資源
bw.close();
br.close();
}
}2.13IO流小結(jié)
- 字節(jié)流

- 字符流

3練習案例
3.1集合到文件
- 案例需求
把文本文件中的數(shù)據(jù)讀取到集合中,并遍歷集合。要求:文件中每一行數(shù)據(jù)是一個集合元素
- 實現(xiàn)步驟
- 創(chuàng)建字符緩沖輸入流對象
- 創(chuàng)建ArrayList集合對象
- 調(diào)用字符緩沖輸入流對象的方法讀數(shù)據(jù)
- 把讀取到的字符串數(shù)據(jù)存儲到集合中
- 釋放資源
- 遍歷集合
- 代碼實現(xiàn)
public class TxtToArrayListDemo {
public static void main(String[] args) throws IOException {
//創(chuàng)建字符緩沖輸入流對象
BufferedReader br = new BufferedReader(new FileReader("myCharStream\\array.txt"));
//創(chuàng)建ArrayList集合對象
ArrayList<String> array = new ArrayList<String>();
//調(diào)用字符緩沖輸入流對象的方法讀數(shù)據(jù)
String line;
while ((line=br.readLine())!=null) {
//把讀取到的字符串數(shù)據(jù)存儲到集合中
array.add(line);
}
//釋放資源
br.close();
//遍歷集合
for(String s : array) {
System.out.println(s);
}
}
}3.2文件到集合
- 案例需求
把ArrayList集合中的字符串數(shù)據(jù)寫入到文本文件。要求:每一個字符串元素作為文件中的一行數(shù)據(jù)
- 實現(xiàn)步驟
- 創(chuàng)建ArrayList集合
- 往集合中存儲字符串元素
- 創(chuàng)建字符緩沖輸出流對象
- 遍歷集合,得到每一個字符串數(shù)據(jù)
- 調(diào)用字符緩沖輸出流對象的方法寫數(shù)據(jù)
- 釋放資源
- 代碼實現(xiàn)
public class ArrayListToTxtDemo {
public static void main(String[] args) throws IOException {
//創(chuàng)建ArrayList集合
ArrayList<String> array = new ArrayList<String>();
//往集合中存儲字符串元素
array.add("hello");
array.add("world");
array.add("java");
//創(chuàng)建字符緩沖輸出流對象
BufferedWriter bw = new BufferedWriter(new FileWriter("myCharStream\\array.txt"));
//遍歷集合,得到每一個字符串數(shù)據(jù)
for(String s : array) {
//調(diào)用字符緩沖輸出流對象的方法寫數(shù)據(jù)
bw.write(s);
bw.newLine();
bw.flush();
}
//釋放資源
bw.close();
}
}3.3點名器
- 案例需求
我有一個文件里面存儲了班級同學的姓名,每一個姓名占一行,要求通過程序?qū)崿F(xiàn)隨點名器
- 實現(xiàn)步驟
- 創(chuàng)建字符緩沖輸入流對象
- 創(chuàng)建ArrayList集合對象
- 調(diào)用字符緩沖輸入流對象的方法讀數(shù)據(jù)
- 把讀取到的字符串數(shù)據(jù)存儲到集合中
- 釋放資源
- 使用Random產(chǎn)生一個隨機數(shù),隨機數(shù)的范圍在:[0,集合的長度)
- 把第6步產(chǎn)生的隨機數(shù)作為索引到ArrayList集合中獲取值
- 把第7步得到的數(shù)據(jù)輸出在控制臺
- 代碼實現(xiàn)
public class CallNameDemo {
public static void main(String[] args) throws IOException {
//創(chuàng)建字符緩沖輸入流對象
BufferedReader br = new BufferedReader(new FileReader("myCharStream\\names.txt"));
//創(chuàng)建ArrayList集合對象
ArrayList<String> array = new ArrayList<String>();
//調(diào)用字符緩沖輸入流對象的方法讀數(shù)據(jù)
String line;
while ((line=br.readLine())!=null) {
//把讀取到的字符串數(shù)據(jù)存儲到集合中
array.add(line);
}
//釋放資源
br.close();
//使用Random產(chǎn)生一個隨機數(shù),隨機數(shù)的范圍在:[0,集合的長度)
Random r = new Random();
int index = r.nextInt(array.size());
//把第6步產(chǎn)生的隨機數(shù)作為索引到ArrayList集合中獲取值
String name = array.get(index);
//把第7步得到的數(shù)據(jù)輸出在控制臺
System.out.println("幸運者是:" + name);
}
}3.4集合到文件改進版
- 案例需求
把ArrayList集合中的學生數(shù)據(jù)寫入到文本文件。要求:每一個學生對象的數(shù)據(jù)作為文件中的一行數(shù)據(jù)?
格式:學號,姓名,年齡,居住地 舉例:yijizhichang001,林青霞,30,西安
- 實現(xiàn)步驟
- 定義學生類
- 創(chuàng)建ArrayList集合
- 創(chuàng)建學生對象
- 把學生對象添加到集合中
- 創(chuàng)建字符緩沖輸出流對象
- 遍歷集合,得到每一個學生對象
- 把學生對象的數(shù)據(jù)拼接成指定格式的字符串
- 調(diào)用字符緩沖輸出流對象的方法寫數(shù)據(jù)
- 釋放資源
- 代碼實現(xiàn)
- 學生類
public class Student {
private String sid;
private String name;
private int age;
private String address;
public Student() {
}
public Student(String sid, String name, int age, String address) {
this.sid = sid;
this.name = name;
this.age = age;
this.address = address;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}- 測試類
public class ArrayListToFileDemo {
public static void main(String[] args) throws IOException {
//創(chuàng)建ArrayList集合
ArrayList<Student> array = new ArrayList<Student>();
//創(chuàng)建學生對象
Student s1 = new Student("yijizhichang001", "林青霞", 30, "西安");
Student s2 = new Student("yijizhichang002", "張曼玉", 35, "武漢");
Student s3 = new Student("yijizhichang003", "王祖賢", 33, "鄭州");
//把學生對象添加到集合中
array.add(s1);
array.add(s2);
array.add(s3);
//創(chuàng)建字符緩沖輸出流對象
BufferedWriter bw = new BufferedWriter(new FileWriter("myCharStream\\students.txt"));
//遍歷集合,得到每一個學生對象
for (Student s : array) {
//把學生對象的數(shù)據(jù)拼接成指定格式的字符串
StringBuilder sb = new StringBuilder();
sb.append(s.getSid()).append(",").append(s.getName()).append(",").append(s.getAge()).append(",").append(s.getAddress());
//調(diào)用字符緩沖輸出流對象的方法寫數(shù)據(jù)
bw.write(sb.toString());
bw.newLine();
bw.flush();
}
//釋放資源
bw.close();
}
}3.5文件到集合改進版
- 案例需求
把文本文件中的數(shù)據(jù)讀取到集合中,并遍歷集合。要求:文件中每一行數(shù)據(jù)是一個學生對象的成員變量值
舉例:yijizhichang001,林青霞,30,西安
- 實現(xiàn)步驟
- 定義學生類
- 創(chuàng)建字符緩沖輸入流對象
- 創(chuàng)建ArrayList集合對象
- 調(diào)用字符緩沖輸入流對象的方法讀數(shù)據(jù)
- 把讀取到的字符串數(shù)據(jù)用split()進行分割,得到一個字符串數(shù)組
- 創(chuàng)建學生對象
- 把字符串數(shù)組中的每一個元素取出來對應(yīng)的賦值給學生對象的成員量值
- 把學生對象添加到集合
- 釋放資源
- 遍歷集合
- 代碼實現(xiàn)
由于Student類和上一題目是一致的,因此在這里不再贅述,直接給出測試類。
- 測試類
public class FileToArrayListDemo {
public static void main(String[] args) throws IOException {
//創(chuàng)建字符緩沖輸入流對象
BufferedReader br = new BufferedReader(new FileReader("myCharStream\\students.txt"));
//創(chuàng)建ArrayList集合對象
ArrayList<Student> array = new ArrayList<Student>();
//調(diào)用字符緩沖輸入流對象的方法讀數(shù)據(jù)
String line;
while ((line = br.readLine()) != null) {
//把讀取到的字符串數(shù)據(jù)用split()進行分割,得到一個字符串數(shù)組
String[] strArray = line.split(",");
//創(chuàng)建學生對象
Student s = new Student();
//把字符串數(shù)組中的每一個元素取出來對應(yīng)的賦值給學生對象的成員變量值
//yijizhichang001,林青霞,30,西安
s.setSid(strArray[0]);
s.setName(strArray[1]);
s.setAge(Integer.parseInt(strArray[2]));
s.setAddress(strArray[3]);
//把學生對象添加到集合
array.add(s);
}
//釋放資源
br.close();
//遍歷集合
for (Student s : array) {
System.out.println(s.getSid() + "," + s.getName() + "," + s.getAge() + "," + s.getAddress());
}
}
}總結(jié)
本文主要給大家介紹了字節(jié)緩存流的構(gòu)造方法,同時也介紹了字符流中的一些相關(guān)的內(nèi)容,并且通過大量的案例供大家理解。最后通過一些經(jīng)典的案例幫助大家對前面所學的知識做了一個綜合的應(yīng)用。這篇文章也是沒有給出代碼的運行結(jié)果圖,一方面是由于相應(yīng)的資料大家沒有,就是給出運行圖效果也不是很好。另外也是最關(guān)鍵的一點,沒有運行圖就是督促讀者自己去運行代碼,這樣間接地幫助大家理解一些代碼的實現(xiàn)過程。但是代碼沒有任何的問題。最多就是需要大家把該導的包導進去,還有就是把涉及到的到路徑換成自己電腦上有的路徑就可以了。在這里我們的所有File類以及相關(guān)文件讀入讀出的流就已經(jīng)全部給大家介紹完畢了,希望大家認真學習,不斷提高自己的編程能力。我還是強烈建議大家去動手操作一下,這樣才能有一個很大的收獲
到此這篇關(guān)于Java字節(jié)緩存流的構(gòu)造方法之文件IO流的文章就介紹到這了,更多相關(guān)Java文件IO流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- java中有關(guān)構(gòu)造方法中的輸出
- Java基礎(chǔ)學習之構(gòu)造方法詳解
- java線程組構(gòu)造方法源碼解析
- 詳解Java的構(gòu)造方法及類的初始化
- 深入探究Java線程的創(chuàng)建與構(gòu)造方法
- java中構(gòu)造方法及this關(guān)鍵字的用法實例詳解(超詳細)
- Java構(gòu)造方法和方法重載詳解
- Java 構(gòu)造方法的使用詳解
- Java構(gòu)造方法 super 及自定義異常throw合集詳解用法
- java構(gòu)造器 默認構(gòu)造方法及參數(shù)化構(gòu)造方法
- Java構(gòu)造方法有什么作用?
相關(guān)文章
Java中try-catch-finally執(zhí)行順序你知道嗎
本文主要介紹了try-catch-finally執(zhí)行順序你知道嗎,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06
springmvc+shiro自定義過濾器的實現(xiàn)代碼
這篇文章主要介紹了springmvc+shiro自定義過濾器的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-10-10
使用springboot activiti關(guān)閉驗證自動部署方式
這篇文章主要介紹了使用springboot activiti關(guān)閉驗證自動部署方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
如何使用Spring RestTemplate訪問restful服務(wù)
這篇文章主要介紹了如何使用Spring RestTemplate訪問restful服務(wù),詳細的介紹了什么是RestTemplate以及簡單實現(xiàn),非常具有實用價值,需要的朋友可以參考下2018-10-10
基于ElasticSearch Analyzer的使用規(guī)則詳解
這篇文章主要介紹了基于ElasticSearch Analyzer的使用規(guī)則,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
Mybatis?Plus?新版lambda?表達式查詢異常的處理
這篇文章主要介紹了Mybatis?Plus?新版lambda?表達式查詢異常的處理方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01

