1. 【應(yīng)用】IO流概述及FileWriter類使用
a. 【了解】能夠闡述IO流的作用
數(shù)據(jù)的傳輸鲁驶、java對(duì)數(shù)據(jù)的操作都是通過(guò)流的方式
圖片.png
b. 【應(yīng)用】能夠獨(dú)立完成利用FileWriter向文本文件中寫數(shù)據(jù)以及追加數(shù)據(jù)
1狈惫、FlieWriter
FileWriter 用于寫入字符流客冈。要寫入原始字節(jié)流,請(qǐng)考慮使用 FileOutputStream。
常用構(gòu)造方法:
根據(jù)給定的文件名構(gòu)造一個(gè) FileWriter 對(duì)象蚜迅。
參數(shù):
fileName - 一個(gè)字符串吵血,表示與系統(tǒng)有關(guān)的文件名。
拋出:
IOException - 如果指定文件存在袄友,但它是一個(gè)目錄,而不是一個(gè)常規(guī)文件卑雁;或者該文件不存在篮赢,但無(wú)法創(chuàng)建它矾麻;抑或因?yàn)槠渌承┰蚨鵁o(wú)法打開(kāi)它
根據(jù)給定的文件名以及指示是否附加寫入數(shù)據(jù)的 boolean 值來(lái)構(gòu)造 FileWriter 對(duì)象累奈。
參數(shù):
fileName - 一個(gè)字符串突委,表示與系統(tǒng)有關(guān)的文件名。
append - 一個(gè) boolean 值纷跛,如果為 true,則將數(shù)據(jù)寫入文件末尾處勒叠,而不是寫入文件開(kāi)始處噪舀。
拋出:
IOException - 如果指定文件存在净响,但它是一個(gè)目錄惠毁,而不是一個(gè)常規(guī)文件;或者該文件不存在蛔趴,但無(wú)法創(chuàng)建它;亦或因?yàn)槠渌承┰蚨鵁o(wú)法打開(kāi)它
FileWriter(String fileName)
根據(jù)給定的 File 對(duì)象構(gòu)造一個(gè) FileWriter 對(duì)象利术。
參數(shù):
file - 要寫入數(shù)據(jù)的 File 對(duì)象良姆。
拋出:
IOException - 如果該文件存在陆馁,但它是一個(gè)目錄捺萌,而不是一個(gè)常規(guī)文件;或者該文件不存在壮锻,但無(wú)法創(chuàng)建它灰殴;抑或因?yàn)槠渌承┰蚨鵁o(wú)法打開(kāi)它
根據(jù)給定的 File 對(duì)象構(gòu)造一個(gè) FileWriter 對(duì)象掰伸。如果第二個(gè)參數(shù)為 true多搀,則將字節(jié)寫入文件末尾處催跪,而不是寫入文件開(kāi)始處榛鼎。
參數(shù):
file - 要寫入數(shù)據(jù)的 File 對(duì)象
append - 如果為 true,則將字節(jié)寫入文件末尾處,而不是寫入文件開(kāi)始處
拋出:
IOException - 如果該文件存在队丝,但它是一個(gè)目錄靡馁,而不是一個(gè)常規(guī)文件;或者該文件不存在机久,但無(wú)法創(chuàng)建它臭墨;抑或因?yàn)槠渌承┰蚨鵁o(wú)法打開(kāi)它
FileWriter向文件中寫數(shù)據(jù)操作步驟:
a:使用FileWriter流關(guān)聯(lián)文件
b:利用FileWriter的寫方法寫數(shù)據(jù) write()
c:利用FileWriter的刷新方法將數(shù)據(jù)從內(nèi)存刷到硬盤上 flush()
d:利用FileWriter的關(guān)流方法將釋放占用的系統(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. 【應(yīng)用】能夠理解并用代碼測(cè)試write()的重載方法
void write(String str):寫一個(gè)字符串?dāng)?shù)據(jù)
void write(String str,int index,int len):寫一個(gè)字符串中的一部分?jǐn)?shù)據(jù)
void write(int ch):寫一個(gè)字符數(shù)據(jù),這里寫int類型的好處是既可以寫char類型的數(shù)據(jù)吞加,也可以寫char對(duì)應(yīng)的int類型的值裙犹。'a',97
void write(char[] chs):寫一個(gè)字符數(shù)組數(shù)據(jù)
2. 【應(yīng)用】FileReader類使用和緩沖流使用
a. 【應(yīng)用】能夠獨(dú)立使用FileReader讀數(shù)據(jù)一次讀取一個(gè)字符
使用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. 【應(yīng)用】能夠?qū)懗隼肍ileReader和FileWrtie完成文本文件復(fù)制的兩種方式
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();
}
}
}
}