1. 【應用】IO流概述及FileWriter類使用
a. 【了解】能夠闡述IO流的作用
數據的傳輸、java對數據的操作都是通過流的方式

圖片.png
b. 【應用】能夠獨立完成利用FileWriter向文本文件中寫數據以及追加數據
1、FlieWriter
FileWriter 用于寫入字符流。要寫入原始字節(jié)流,請考慮使用 FileOutputStream。
常用構造方法:
根據給定的文件名構造一個 FileWriter 對象。
參數:
fileName - 一個字符串,表示與系統(tǒng)有關的文件名。
拋出:
IOException - 如果指定文件存在,但它是一個目錄,而不是一個常規(guī)文件;或者該文件不存在,但無法創(chuàng)建它;抑或因為其他某些原因而無法打開它
根據給定的文件名以及指示是否附加寫入數據的 boolean 值來構造 FileWriter 對象。
參數:
fileName - 一個字符串,表示與系統(tǒng)有關的文件名。
append - 一個 boolean 值,如果為 true,則將數據寫入文件末尾處,而不是寫入文件開始處。
拋出:
IOException - 如果指定文件存在,但它是一個目錄,而不是一個常規(guī)文件;或者該文件不存在,但無法創(chuàng)建它;亦或因為其他某些原因而無法打開它
FileWriter(String fileName)
根據給定的 File 對象構造一個 FileWriter 對象。
參數:
file - 要寫入數據的 File 對象。
拋出:
IOException - 如果該文件存在,但它是一個目錄,而不是一個常規(guī)文件;或者該文件不存在,但無法創(chuàng)建它;抑或因為其他某些原因而無法打開它
根據給定的 File 對象構造一個 FileWriter 對象。如果第二個參數為 true,則將字節(jié)寫入文件末尾處,而不是寫入文件開始處。
參數:
file - 要寫入數據的 File 對象
append - 如果為 true,則將字節(jié)寫入文件末尾處,而不是寫入文件開始處
拋出:
IOException - 如果該文件存在,但它是一個目錄,而不是一個常規(guī)文件;或者該文件不存在,但無法創(chuàng)建它;抑或因為其他某些原因而無法打開它
FileWriter向文件中寫數據操作步驟:
a:使用FileWriter流關聯(lián)文件
b:利用FileWriter的寫方法寫數據 write()
c:利用FileWriter的刷新方法將數據從內存刷到硬盤上 flush()
d:利用FileWriter的關流方法將釋放占用的系統(tǒng)底層資源 close()
代碼:
public class FileWriteTest {
public static void main(String[] args) {
FileWriterTest1();
FileWriterTest2();
}
public static void FileWriterTest1(){
//第一種方式,直接使用fileName
FileWriter fw = null;
try {
fw = new FileWriter("c:\\a.txt");
fw.write("IO你好");
fw.flush();
} catch (IOException e) {
e.printStackTrace();
}finally {
try{
if(null != fw)
fw.close();
}catch (IOException e) {
}
}
}
public static void FileWriterTest2(){
//使用文件格式
FileWriter fw2 = null;
try {
fw2 = new FileWriter(new File("c://b.txt"));
fw2.write("file");
fw2.flush();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(null != fw2) {
try{
fw2.close();
}catch (IOException e){
}
}
}
}
}
c. 【應用】能夠理解并用代碼測試write()的重載方法
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):寫一個字符數組數據
2. 【應用】FileReader類使用和緩沖流使用
a. 【應用】能夠獨立使用FileReader讀數據一次讀取一個字符
使用read()方法
public class FileReaderTest {
public static void main(String[] args) {
readCharOneByOne("c://a.txt");
readCharOneByOne(new File("c://b.txt"));
}
public static void readCharOneByOne(String fileName) {
FileReader reader = null;
try {
reader = new FileReader(fileName);
int ch = 0;
while ((ch = reader.read()) != -1) {
System.out.println((char) (ch));
}
} catch (IOException e) {
}
}
public static void readCharOneByOne(File file) {
FileReader reader = null;
try {
reader = new FileReader(file);
int ch = 0;
while ((ch = reader.read()) != -1) {
System.out.println((char) (ch));
}
} catch (IOException e) {
}
}
}
b. 【應用】能夠寫出利用FileReader和FileWrtie完成文本文件復制的兩種方式
public static void copyIFileTest1(String srcFileName, String dstFileName){
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader(srcFileName);
fw = new FileWriter(dstFileName);
int ch = 0;
while ((ch = fr.read())!=-1) {
fw.write((char)ch);
}
fw.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
}finally {
if(null != fr) {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(null != fw) {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void copyFileTest2(String srcFileName, String dstFileName) {
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader(srcFileName);
fw = new FileWriter(dstFileName);
char [] ch = new char[1024];
int len = 0;
while ((len = fr.read(ch))!= -1) {
fw.write(ch, 0, len);
}
fw.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
} finally {
if(null != fr) {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(null != fw) {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}