1. 【应用】IO流概述及FileWriter类使用
a. 【了解】能够阐述IO流的作用
数据的传输、java对数据的操作都是通过流的方式
图片.png
b. 【应用】能够独立完成利用FileWriter向文本文件中写数据以及追加数据
1、FlieWriter
FileWriter 用于写入字符流。要写入原始字节流,请考虑使用 FileOutputStream。
常用构造方法:
根据给定的文件名构造一个 FileWriter 对象。
参数:
fileName - 一个字符串,表示与系统有关的文件名。
抛出:
IOException - 如果指定文件存在,但它是一个目录,而不是一个常规文件;或者该文件不存在,但无法创建它;抑或因为其他某些原因而无法打开它
根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
参数:
fileName - 一个字符串,表示与系统有关的文件名。
append - 一个 boolean 值,如果为 true,则将数据写入文件末尾处,而不是写入文件开始处。
抛出:
IOException - 如果指定文件存在,但它是一个目录,而不是一个常规文件;或者该文件不存在,但无法创建它;亦或因为其他某些原因而无法打开它
FileWriter(String fileName)
根据给定的 File 对象构造一个 FileWriter 对象。
参数:
file - 要写入数据的 File 对象。
抛出:
IOException - 如果该文件存在,但它是一个目录,而不是一个常规文件;或者该文件不存在,但无法创建它;抑或因为其他某些原因而无法打开它
根据给定的 File 对象构造一个 FileWriter 对象。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。
参数:
file - 要写入数据的 File 对象
append - 如果为 true,则将字节写入文件末尾处,而不是写入文件开始处
抛出:
IOException - 如果该文件存在,但它是一个目录,而不是一个常规文件;或者该文件不存在,但无法创建它;抑或因为其他某些原因而无法打开它
FileWriter向文件中写数据操作步骤:
a:使用FileWriter流关联文件
b:利用FileWriter的写方法写数据 write()
c:利用FileWriter的刷新方法将数据从内存刷到硬盘上 flush()
d:利用FileWriter的关流方法将释放占用的系统底层资源 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();
}
}
}
}
网友评论