Java 程序 关于Properties 类的 Store方法的问题

guoming_Chen 2014-05-29 12:05:53

InputStream in = new FileInputStream("Demo.txt");
Properties p = new Properties();
p.load(in);
p.setProperty("dd","3000");

OutputStream out = new FileOutputStream("Demo.txt");
p.store(out,"sdf");
System.out.println(p);
out.close();
in.close();

这样写就可以改变Demo.txt 的值
为什么下面的代码不能会覆盖以前 Demo.txt文件中的值呢?

OutputStream out = new FileOutputStream("Demo.txt");
InputStream in = new FileInputStream("Demo.txt");
Properties p = new Properties();
p.load(in);
p.setProperty("dd","3000");
p.store(out,"sdf");
System.out.println(p);
out.close();
in.close();

OutputStream out = new FileOutputStream("Demo.txt");
把这个代码移动到上面和中间有什么不同之处吗?
求大神们求解。
...全文
453 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shine333 2014-05-29
  • 打赏
  • 举报
回复
引用 9 楼 disalong 的回复:
[quote=引用 7 楼 vnvlyp 的回复:] [quote=引用 4 楼 disalong 的回复:] 我跑了一下,两段代码的结果一样 不知道你的问题什么意思,而且可以确定的是,获取流对象的顺序对程序没有影响呀,决定于你读写文件的操作顺序而已
那你觉得下面的程序会干什么?你在Demo.txt里随便写点东西再运行,你觉得它会输出文件内容?
	public static void main(String[] args) throws IOException {
		BufferedReader in = new BufferedReader(new FileReader("Demo.txt"));
		OutputStream out = new FileOutputStream("Demo.txt");

		String line;
		while ((line = in.readLine()) != null) {
			System.out.println(line);
		}
		
		in.close();
		out.close();
	}
[/quote] 写成OutputStream out = new FileOutputStream("Demo.txt", true); 就行了,学习了。[/quote] 纯粹添乱啊。变成appending只是让事情变得更加复杂
disalong 2014-05-29
  • 打赏
  • 举报
回复
引用 7 楼 vnvlyp 的回复:
[quote=引用 4 楼 disalong 的回复:] 我跑了一下,两段代码的结果一样 不知道你的问题什么意思,而且可以确定的是,获取流对象的顺序对程序没有影响呀,决定于你读写文件的操作顺序而已
那你觉得下面的程序会干什么?你在Demo.txt里随便写点东西再运行,你觉得它会输出文件内容?
	public static void main(String[] args) throws IOException {
		BufferedReader in = new BufferedReader(new FileReader("Demo.txt"));
		OutputStream out = new FileOutputStream("Demo.txt");

		String line;
		while ((line = in.readLine()) != null) {
			System.out.println(line);
		}
		
		in.close();
		out.close();
	}
[/quote] 写成OutputStream out = new FileOutputStream("Demo.txt", true); 就行了,学习了。
小绵羊 2014-05-29
  • 打赏
  • 举报
回复
引用 3 楼 vnvlyp 的回复:
问题在这 OutputStream out = new FileOutputStream("Demo.txt"); FileOutputStream打开文件的方式默认是覆盖,就是一旦执行了上面这句,那么原有文件中的内容被清空 所以你在还没有p.load(in);加载Properties的时候就把文件清空了
+10086
vnvlyp 2014-05-29
  • 打赏
  • 举报
回复
引用 4 楼 disalong 的回复:
我跑了一下,两段代码的结果一样 不知道你的问题什么意思,而且可以确定的是,获取流对象的顺序对程序没有影响呀,决定于你读写文件的操作顺序而已
那你觉得下面的程序会干什么?你在Demo.txt里随便写点东西再运行,你觉得它会输出文件内容?
	public static void main(String[] args) throws IOException {
		BufferedReader in = new BufferedReader(new FileReader("Demo.txt"));
		OutputStream out = new FileOutputStream("Demo.txt");

		String line;
		while ((line = in.readLine()) != null) {
			System.out.println(line);
		}
		
		in.close();
		out.close();
	}
小绵羊 2014-05-29
  • 打赏
  • 举报
回复
注意flush
shadon178 2014-05-29
  • 打赏
  • 举报
回复
楼主你结贴率太低了
disalong 2014-05-29
  • 打赏
  • 举报
回复
我跑了一下,两段代码的结果一样 不知道你的问题什么意思,而且可以确定的是,获取流对象的顺序对程序没有影响呀,决定于你读写文件的操作顺序而已
vnvlyp 2014-05-29
  • 打赏
  • 举报
回复
问题在这 OutputStream out = new FileOutputStream("Demo.txt"); FileOutputStream打开文件的方式默认是覆盖,就是一旦执行了上面这句,那么原有文件中的内容被清空 所以你在还没有p.load(in);加载Properties的时候就把文件清空了
vnvlyp 2014-05-29
  • 打赏
  • 举报
回复
引用 1 楼 vnvlyp 的回复:
没区别,代码风格和习惯问题 只要你在使用一个变量之前,申明了变量并进行了初始化赋值那就没有问题 话说你这个文不对题啊。。你的问题和Properties类没什么关系。。
请无视我的胡扯。。只看了你的问题没看代码。。
vnvlyp 2014-05-29
  • 打赏
  • 举报
回复
没区别,代码风格和习惯问题 只要你在使用一个变量之前,申明了变量并进行了初始化赋值那就没有问题 话说你这个文不对题啊。。你的问题和Properties类没什么关系。。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧