JAVA中的IO流-FileWriter类以及如何捕获异常

FileWriter类是IO流中—字符流的顶层父类

构造方法:

FileWriter(String fileName) 
构造一个给定文件名的FileWriter对象。  

FileWriter(String fileName, boolean append) 
构造一个FileWriter对象,给出一个带有布尔值的文件名,表示是否附加写入的数据。  


String fileName : 文件的名字类型
boolean append 写 true 表示可以续写 --- false, 则写入文件开始处。

如果文件不存在,则会自动创建.
如果文件存在,则会被覆盖.

方法:

 	.write(String str); 			 把内容写入文件中
 	.flush();						进行刷新,将数据直接写入目的地中.
 	.close();						关闭字符流, 这里调用了一次flush()

FileWriter(String fileName) 例子:
有异常,这里选择抛出…后面例子进行捕捉
因为假设在我的电脑我有d盘
所以用路经: “D:\test.txt”
但是把这个程序给到别人,别人电脑没有D盘,就会出现异常

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

public class Demo {
    public static void main(String[] args) throws IOException { //抛出异常

        //内容写入test.txt文本文件中
        FileWriter fw  = new FileWriter("test.txt"); //这里有一个异常
        //调用write方法把abcde写入文件中
        fw.write("abcde"); //这里也有个异常
    }
}

此时运行,找到test.txt这个文件发现abcde并没有在这个文本文件中

因为此时只是在缓冲区中,并没有直接写入文本文件

我们可以在fw.write("abcde"); 后面加一句fw.flush();
此时abcde就写入到了文本文件中了.

如果是写完一句就不再写了. 我们可以直接使用fw.close();直接关闭流

.close();本身里面就调用了.flush();


FileWriter(String fileName, boolean append) 例子:
可以进行续写

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

public class Demo {
	public static void main(String[] args) throws IOException {
	 //内容写入test.txt文本文件中
        FileWriter fw  = new FileWriter("test.txt", true); //这里有一个异常
        //调用write方法把abcde写入文件中
        fw.write("abcde");
        //再写入
         fw.write("fgh");
         //关闭流
         fw.close();
	}
}

此时文本文件显示的就是abcdefgh


捕捉异常例子:

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

public class Demo {

	//获取系统属性的换行
    private static final String LINE_SEPARATOR = System.getProperty("line.separator");	

    public static void main(String[] args) {

        FileWriter fw = null;

        try {
            fw = new FileWriter("k:\\date.txt");
            fw.write("aaa" + LINE_SEPARATOR + "hahah");
        } catch(IOException e) {
            System.out.println(e.toString());
        } finally {
            if (fw != null) {
                try {
                    fw.close();
                } catch (IOException e) {
                    //code.....
                    throw new RuntimeException("关闭失败");
                }
            }
        }
    }
}

如果要对字符流进行捕捉必须先把对象定义再try的外面
FileWriter fw = null;
然后再try里面在进行new 对象…

try {
            FileWriter fw = new FileWriter("k:\\date.txt");
            fw.write("aaa" + LINE_SEPARATOR + "hahah");
        }

因为如果这样的话, 那么在finally里面的字符流就关闭不了了

在进行字节流关闭的时候,也要就行异常捕捉, 因为字节流有时候会因为某种原因关不了.

发布了87 篇原创文章 · 获赞 43 · 访问量 4005

猜你喜欢

转载自blog.csdn.net/weixin_42947972/article/details/103344883
今日推荐