------- <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! ----
关于IO接口原理的第二贴 生命不息,折腾不止!向上吧,骚年!!!
第一节、接上节文件流,下面介绍FileOutputStream
FileOutputStream 类是往指定文件中写入数据的类,下面直接给出例子进行阐释,不懂得要进行第一帖的阅读,
第一帖是基础,也是精华。。。。。。。
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/** 用FileOutputStream类往指定文件中写入数据 */
public class FileOutputStreamTest {
public static void main(String[] args) {
FileOutputStream out = null;
try {
//step1: 创建一个向指定名的文件中写入数据的FileOutputStream
//第二个参数设置为true表示:使用追加模式添加字节
out = new FileOutputStream("D:\\IOTest\\dest.txt",true);
//step2: 写数据
out.write('#');
out.write("helloWorld".getBytes());
out.write("你好".getBytes());
//step3: 刷新此输出流
out.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) { // 捕获IO异常
e.printStackTrace();
}finally{
if(out != null){
try {
out.close(); //step4: 关闭输出流
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
运行这个程序后,可以再D:\IOTest\看到有个dest.txt的文件存在,他的内容如下:
#helloWorld你好
与上节不同的是,用字节文件输出流往文件中写入的中文字符没有乱,经查阅资料得知:
程序先把中文字符转换成了字节数组,然后再向文件中写入,windows操作系统的记事本程序在
打开文本文件时能够自动“认出”中文字符。
下面给出自己总结的使用IO流类操作文件的一般步骤:
第一步、创建连接到指定数据源的IO流对象
第二步、利用IO流类提供的方法进行数据额读取和写入。在整个操作过程中,都需要处理java.io.IOException异常
。另外,如果是向输出流写入数据,还要在写入操作完成后调用flush()方法强制写出所有缓冲的数据。
第三步、操作完毕后,一定要调用close()方法关闭IO流对象。
第二节、关于 FileReader和FileWriter类
FileReader和FileWriter类是以字符为操作单位的文件输入流和文件输出流,故,用FileReader和FileWriter
来操作字符文本文件是最合适不过的。,下面直接附上实现负值字符文本文件的功能
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/** 用FileReader和FileWriter实现字符文本文件复制的功能 */
public class TextCopyTest {
public static void main(String[] args) {
FileReader fr = null;
FileWriter fw = null;
int c = 0;
try {
//step1:创建IO流对象
fr = new FileReader("d:\\IOTest\\source.txt");
fw = new FileWriter("d:\\IOTest\\dest2.txt");
int length = 0;
char[] cbuf = new char[8192]; //
while((c = fr.read(cbuf))!= -1){ //一次性读取指定字符数组长度的数据
fw.write(cbuf, 0, length); //一次性写入指定字符数组指定位置的数据
}
while ((c = fr.read()) != -1) {//从源文件中读取字符
fw.write(c); //往目标文件中写入字符
}
fw.flush(); //刷新输出流
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭所有的IO流对象
try {
if (null != fw) {
fw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (null != fr) {
fr.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
运行上面程序后,在D:\IOTest目录下新产生一个文件“dest2.txt”,它的内容跟“source.txt”的内容安全相同
,中文也不会出现乱码(因为是以字符为操作对象的)
------- <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! --------
|