1. 程式人生 > >第1章 IO流概述及FileWriter類使用

第1章 IO流概述及FileWriter類使用

Java

1.1 IO流概述及分類
IO流用來處理設備之間的數據傳輸
Java對數據的操作是通過流的方式
Java用於操作流的類都在IO包中
流按流向分為兩種:輸入流,輸出流
技術分享圖片
1.2 FileWriter類使用
A:打開幫助文檔
B:點擊顯示,找到索引,看到輸入框
C:你要學習什麽內容,你就在框框裏面輸入什麽內容
舉例:Random
D:看包
java.lang包下的類在使用的時候是不需要導包的
E:看類的描述
Random類是用於生成隨機數的類
F:看構造方法
Random():無參構造方法
Random r = new Random();
G:看成員方法
public int nextInt(int n):產生的是一個[0,n)範圍內的隨機數
調用方法:
看返回值類型:人家返回什麽類型,你就用什麽類型接收
看方法名:名字不要寫錯了
看形式參數:人家要幾個參數,你就給幾個,人家要什麽數據類型的,你就給什麽數據類型的
int number = r.nextInt(100);
1.2.1 FileWriter向文件中寫數據
A:FileWriter向文件中寫數據操作步驟:
a:使用FileWriter流關聯文件
b:利用FileWriter的寫方法寫數據
c:利用FileWriter的刷新方法將數據從內存刷到硬盤上
d:利用FileWriter的關流方法將釋放占用的系統底層資源
B:FileWriter方法:
構造方法
FileWriter(String fileName) 傳入一個文件的路徑
成員方法
void write(String str) 向文件中寫str
void flush() 將內存中的數據刷新到文件中
void close() 關流釋放系統底層資源

1.2.1.1 案例代碼一:

package com.itheima_01;
import java.io.FileWriter;
import java.io.IOException;

/*
 * 需求:往文件中寫數據
 * 寫數據--輸出流--FileWriter
 *
 * FileWriter:
 * FileWriter(String fileName):傳遞一個文件名稱
 *
 * 輸出流寫數據的步驟:
 * A:創建輸出流對象
 * B:調用輸出流對象的寫數據的方法
 * C:釋放資源
 */
public class FileWriterDemo {
public static void main(String[] args) throws IOException {
//創建輸出流對象
FileWriter fw = new FileWriter("d:\\a.txt");
/*
 * 創建輸出流對象做了哪些事情:
 * A:調用系統資源創建了一個文件
 * B:創建輸出流對象
 * C:把輸出流對象指向文件
 */
//調用輸出流對象的寫數據的方法
//寫一個字符串數據
fw.write("IO流你好");
//數據沒有直接寫到文件,其實是寫到了內存緩沖區
fw.flush();
//釋放資源
//通知系統釋放和該文件相關的資源
fw.close();
//while(true) {}
}
}

1.2.2 FileWriter註意事項
1.2.2.1 案例代碼二:

package com.itheima_01;

import java.io.FileWriter;
import java.io.IOException;

/*
 * 輸出流寫數據的步驟:
 * A:創建輸出流對象
 * B:調用輸出流對象的寫數據方法,並刷新緩沖區
 * C:釋放資源
 *
 * 相對路徑:相對當前項目而言的,在項目的根目錄下(a.txt)
 * 絕對路徑:以盤符開始的路徑(d:\\a.txt)
 *
 * close()和flush()方法的區別:
 * flush():刷新緩沖區。流對象還可以繼續使用。
 * close():先刷新緩沖區,然後通知系統釋放資源。流對象不可以再被使用了。
 */
public class FileWriterDemo2 {
public static void main(String[] args) throws IOException {
//創建輸出流對象
//FileWriter fw = new FileWriter("d:\\a.txt");
FileWriter fw = new FileWriter("a.txt");
//調用輸出流對象的寫數據方法,並刷新緩沖區
fw.write("helloworld");
fw.flush();
fw.write("java");
fw.flush();
//釋放資源
fw.close();
//Stream closed
//fw.write("javaee");
//fw.flush();
}
}

1.2.3 FileWriter其它寫方法
void write(String str):寫一個字符串數據
void write(String str,int index,int len):寫一個字符串中的一部分數據
void write(int ch):寫一個字符數據,這裏寫int類型的好處是既可以寫char類型的數據,也可以寫char對應的int類型的值。‘a‘,97
void write(char[] chs):寫一個字符數組數據
void write(char[] chs,int index,int len):寫一個字符數組的一部分數據
1.2.3.1 案例代碼三:

package com.itheima_01;
import java.io.FileWriter;
import java.io.IOException;

/*
 * void write(String str):寫一個字符串數據
 * void write(String str,int index,int len):寫一個字符串中的一部分數據
 * void write(int ch):寫一個字符數據,這裏寫int類型的好處是既可以寫char類型的數據,也可以寫char對應的int類型的值。‘a‘,97
 * void write(char[] chs):寫一個字符數組數據
 * void write(char[] chs,int index,int len):寫一個字符數組的一部分數據
 */
public class FileWriterDemo3 {
public static void main(String[] args) throws IOException {
//創建輸出流對象
FileWriter fw = new FileWriter("b.txt");
//void write(String str):寫一個字符串數據
//fw.write("abcde");
//void write(String str,int index,int len):寫一個字符串中的一部分數據
//fw.write("abcde",0,5);
//fw.write("abcde",1,3);
//void write(int ch):寫一個字符數據,這裏寫int類型的好處是既可以寫char類型的數據,也可以寫char對應的int類型的值。‘a‘,97
//fw.write(‘a‘);
//fw.write(97);
//void write(char[] chs):寫一個字符數組數據
char[] chs = {‘a‘,‘b‘,‘c‘,‘d‘,‘e‘};
//fw.write(chs);
//void write(char[] chs,int index,int len):寫一個字符數組的一部分數據
//fw.write(chs,0,5);
fw.write(chs,2,3);
//釋放資源
fw.close();
}
}

1.2.4 FileWriter寫入換行以及向文本末尾追加
1.2.4.1 案例代碼四:

package com.itheima_01;

import java.io.FileWriter;
import java.io.IOException;

/*
 * 如何實現數據的換行?
 * \n可以實現換行,但是windows系統自帶的記事本打開並沒有換行,這是為什麽呢?因為windows識別的換行不是\n,而是\r\n
 * windows:\r\n
 * linux:\n
 * mac:\r
 * 如何實現數據的追加寫入?
 * FileWriter(String fileName, boolean append)
 */
public class FileWriterDemo4 {
public static void main(String[] args) throws IOException {
//創建輸出流對象
//FileWriter fw = new FileWriter("c.txt");
FileWriter fw = new FileWriter("c.txt",true); //表示追加寫入,默認是false
for(int x=0; x<10; x++) {
fw.write("hello"+x);
fw.write("\r\n");
}
//釋放資源
fw.close();
}
}

第1章 IO流概述及FileWriter類使用