黑马程序员技术交流社区
标题: 设置配置文件时,用字符流是否更好? [打印本页]
作者: HAnG 时间: 2013-11-29 15:03
标题: 设置配置文件时,用字符流是否更好?
本帖最后由 HAnG 于 2013-11-30 23:37 编辑
毕老师讲到那个限制使用次数的小程序时,关联prop文件用的是字节流FileInputStream和FileOutputStream,我自己写代码时用的是BufferedReader和BufferedWriter,因为不是说读写纯文本文件用字符流更好吗?老师在这里没有详说,所以我有点疑问,各位说说意见。- package cn.hang.io;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.Properties;
- /*
- * 限制程序使用次数
- */
- public class UsedTimeUp {
- public static void main(String[] args) throws IOException {
- demo();
- }
-
- public static void demo() throws IOException {
- Properties prop = new Properties(); //new prop
- File f = new File("f:\\java\\count.ini"); //File对象关联配置文件
- //不存在则创建
- if(!f.exists())
- f.createNewFile();
-
- BufferedReader bufr = new BufferedReader(new FileReader(f)); //输入流关联File对象
- prop.load(bufr); //prop读取输入流中的配置信息
- int count = 0; //new 使用次数
- String value = prop.getProperty("time"); //获取time值
- //time值不为空则转换成int型,赋给count,为空则count由0变1
- if(value != null) {
- count = Integer.parseInt(value);
- if(count >= 5) {
- System.out.println("您好,拿钱!");
- return;
- }
- }
-
- count++;
- System.out.println("running");
-
- prop.setProperty("time", count+""); //设置配置文件
- BufferedWriter bufw = new BufferedWriter(new FileWriter(f)); //输出流关联File对象
- prop.store(bufw, "used time +1");//保存配置文件
- bufr.close();
- bufw.close();
- }
- }
复制代码
作者: Jim-剣◆﹏ 时间: 2013-11-29 15:29
毕老师操作文本用字符流,也不是绝对,看情况而定吧
就读取配置文件来说,我的猜想是用字节流效率高,直接操作内存
但是如果配置文件的键值存在中文,那么建议使用字符流,否则会出现乱码
作者: 冯晓骏 时间: 2013-11-29 18:32
字符流和字节流都可以,哪个好只是说哪个用起来更方便,可以避免更多的误操作,内部都是一样的字节流FileReader只不过就是字节流按照默认的GDB编码的形式的转换流,底层还是字节流
所以,一下两种方式其实是完全一样的
FileReader fr = new FileReader(“1.txt”);
InputStreamReader isr = new InputStreamReader(new FileInputStream(“1.txt”),”GDB”);
关于效率,带缓冲一定会比不带缓冲效率要高的,因为带缓冲就避免了频繁的读写硬盘,也避免了可能产生的等待资源的时间
作者: 简★零度 时间: 2013-11-30 20:39
问题解决了就把类型改成提问结束1
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |