前面介绍了字节输入流FileInputStream和字节输出流FileOutputStream。本节介绍字节输入流FileReader和字节输出流FileWriter的使用方法。
编程案例
在java编程中,经常使用配置文件存储程序的一些配置属性,如数据库连接地址、访问数据库的账户和密码、下载文件的存储路径等配置属性。
本次编程任务要求创建一个配置文件,该配置文件存储三个属性,分别是数据库连接地址、访问数据库的账户、访问数据库的密码。程序启动后,要求用户输入数据库连接地址、访问数据库的账户、访问数据库的密码,并将用户输入的值存储到配置文件中。
配置文件结构如下:
jdbc.url=jdbc:mysql://192.168.50.25:3306
jdbc.username=root
jdbc.password=123456
编程探讨
编程案例给出的任务要求是创建并输出一个存储数据库连接属性的配置文件,其给出的结构是文本文件,只有三行内容,第一行内容存储数据库的连接地址,第二行内容存储数据库访问账号,第三行内容存储数据库访问密码。
配置文件每行等号的左侧是配置属性名,如jdbc.url、jdbc.username、jdbc.password,等号右侧是配置属性的值,如jdbc:mysql://192.168.50.25:3306、root、123456。
考虑到配置文件是文本文件,可以考虑使用FileWriter类,FileWriter类是字符输出类,它的构造方法同FileOutputStream相同,也提供了四个常用的构造方法。分别说明如下:
场景1:应用File对象,实例化一个FileWriter对象
FileWriter(File file);
场景2:应用给出的文件路径,实例化一个FileWriter对象
FileWriter(String fileName);
场景3:写入数据时,如果文件已存在,需要在实例化FileWriter对象时,需指明写入的数据是覆盖原文件,还是将写入的数据追加到文件尾部。
FileWriter(File file, boolean append);
FileWriter(String fileName, boolean append);
append为true时将写入的数据追加到文件尾部,为false时覆盖原文件。
本案例为新建配置文件,采用FileWriter(File file)构造方法,通过File对象创建一个新文件。
FileWriter对象实例化后,可以使用FileWriter提供的写入方法,将配置内容写入到配置文件。FileWriter类提供了三种写入方法,分别说明如下:
● public void write(int c) throws IOException
该方法写入单个字符c,当需要单字符写入文件时,可以采用该方法。例如,当需要排除某些字符写入文件时,需要判断每个写入的字符值,并根据字符值决定是否写入文件。
● public void write(char [] c, int offset, int len)
该方法将字符数组c的部分或全部内容写入文件,offset为数组的起始偏移量,len为写入的数组长度,当需要将数组的某一部分写入文件时,可以采用该方法。例如,存储一段文字内容的数组,可能只需要写入后半部内容。
● public void write(String s, int offset, int len)
该方法将字符串对象s的部分或全部内容写入文件,offset为字符串对象内容的起始偏移量,len为写入的字符串内容长度。当需要将字符串对象的内容全部或部分写入文件时,可以采用该方法。
● public void write(String s)
该方法将字符串对象写入文件,当需要将字符串对象全部内容写入文件时,可采用此方法。例如,本案例中数据库的连接地址、数据库访问账号、数据库访问密码均需要从用户处获取输入,并存储到字符串对象中。因此,本案例可以采用该方法将字符串内容写入到配置文件。
编程实现
程序声明三个字符串对象,分别存储用户输入的数据库连接地址、数据库访问账号、数据库访问密码。实例化File对象创建配置文件,实例化FileWriter对象打开字符输出流,调用FileWriter类write方法将程序声明的三个字符串对象按照配置文件结构要求格式化后写入到文件。
配置文件的属性内容由配置属性前缀+用户输入的内容拼接而成。例如:数据库连接地址由属性前缀“jdbc.url=” 和用户输入的值确定。最后,调用FileWriter的write写入配置文件的属性内容,并在每个属性内容后写入换行符。程序输出结果如下图所示:
新建配置文件案例输出结果
■ 知识点拨
FileWriter主要用于输出文本类文件,如程序配置文件、XML等类型的文件。FileWriter最常用的方法是写入字符串的方法,该方法将字符串对象的全部内容写入文件。