Java基礎學習之IO流應用案例詳解
一、點名器
需求:
我有一個文件里面存儲了班級同學的姓名,每一個姓名占一行,要求通過程序實現(xiàn)隨機點名器
實現(xiàn)步驟:
- 創(chuàng)建字符緩沖輸入流對象
- 創(chuàng)建ArrayList集合對象
- 調用字符緩沖流對象的方法讀數(shù)據(jù)
- 把讀取到的字符串數(shù)據(jù)存儲到集合中
- 釋放資源
- 使用Randam產(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>();
//調用字符緩沖輸入流對象的方法讀數(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);
}
}
二、集合到文件
需求:
把ArrayList集合中的學生數(shù)據(jù)寫入到文本文件。要求:每一個學生對象的數(shù)據(jù)作為文件中的一行數(shù)據(jù),格式:學號,姓名,年齡,居住地 舉例:itheima001,小林,20,青島
實現(xiàn)步驟:
- 定義學生類
- 創(chuàng)建ArrayList集合
- 創(chuàng)建學生對象
- 把學生對象添加到集合中
- 創(chuàng)建字符緩沖輸出流對象
- 遍歷集合,得到每一個學生對象
- 把學生對象的數(shù)據(jù)拼接成指定格式的字符串
- 調用字符緩沖輸出流對象的方法寫數(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("itheima001", "小林", 20, "西安");
Student s2 = new Student("itheima002", "小張", 25, "武漢");
Student s3 = new Student("itheima003", "小王", 23, "鄭州");
//把學生對象添加到集合中
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.ge tAge()).append(",").append(s.getAddress());
//調用字符緩沖輸出流對象的方法寫數(shù)據(jù)
bw.write(sb.toString());
bw.newLine();
bw.flush();
}
//釋放資源
bw.close();
}
}
三、文件到集合
需求:
把文本文件中的數(shù)據(jù)讀取到集合中,并遍歷集合。要求:文件中每一行數(shù)據(jù)是一個學生對象的成員變量值,舉例:itheima001,小林,23,青島
實現(xiàn)步驟:
- 定義學生類
- 創(chuàng)建字符緩沖輸入流對象
- 創(chuàng)建ArrayList集合對象
- 調用字符緩沖輸入流對象的方法讀數(shù)據(jù)
- 把讀取到的字符串數(shù)據(jù)用split()進行分隔,得到一個字符串數(shù)組
- 創(chuàng)建學生對象
- 把字符串數(shù)組中的每一個元素取出來對應的賦值給學生對象的成員變量值
- 把學生對象添加到集合
- 釋放資源
- 遍歷集合
代碼實現(xiàn):
學生類同上
測試類:
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>();
//調用字符緩沖輸入流對象的方法讀數(shù)據(jù)
String line;
while ((line = br.readLine()) != null) {
//把讀取到的字符串數(shù)據(jù)用split()進行分割,得到一個字符串數(shù)組
String[] strArray = line.split(",");
//創(chuàng)建學生對象
Student s = new Student();
//把字符串數(shù)組中的每一個元素取出來對應的賦值給學生對象的成員變量值
//itheima001,林青霞,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());
}
}
}到此這篇關于Java基礎學習之IO流應用案例詳解的文章就介紹到這了,更多相關Java IO流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring MVC 更靈活的控制 json 返回問題(自定義過濾字段)
本篇文章主要介紹了Spring MVC 更靈活的控制 json 返回問題(自定義過濾字段),具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-02-02
Java toString方法重寫工具之ToStringBuilder案例詳解
這篇文章主要介紹了Java toString方法重寫工具之ToStringBuilder案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08
java9的JShell小工具和編譯器兩種自動優(yōu)化方法
這篇文章主要介紹了java9的JShell小工具和編譯器兩種自動優(yōu)化方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-07-07
在java中使用SPI創(chuàng)建可擴展的應用程序操作
這篇文章主要介紹了在java中使用SPI創(chuàng)建可擴展的應用程序操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
5分鐘搭建SpringCloud Eureka服務注冊中心的實現(xiàn)
這篇文章主要介紹了5分鐘搭建SpringCloud Eureka服務注冊中心的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03

