java中如何在文件中修改某行信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何在文件中修改某行信息相关的知识,希望对你有一定的参考价值。
这行信息是用于 记录某条记录的,修改后改变其状态。
请问如何在此行进行修改或在其后追加一个标记??
既然能读出信息 那肯定是有标志位的 关键是如何 用这个标志位?
//readString2List
public static List getAllLineFromFile(File file)
try
FileReader fr = new FileReader(file.getPath());
BufferedReader br = new BufferedReader(fr);
List list = new ArrayList();
String ss = "";
while ((ss = br.readLine()) != null)
list.add(ss);
fr.close();
return list;
catch (Exception e)
e.printStackTrace();
return null;
//找到要修改的行,改掉要改的东西
//把list重新写入文件 参考技术A 把文件按行读入一个List,然后遍历这个List,改掉要改的行,重新把list写入文件.
//readString2List
public static List getAllLineFromFile(File file)
try
FileReader fr = new FileReader(file.getPath());
BufferedReader br = new BufferedReader(fr);
List list = new ArrayList();
String ss = "";
while ((ss = br.readLine()) != null)
list.add(ss);
fr.close();
return list;
catch (Exception e)
e.printStackTrace();
return null;
//找到要修改的行,改掉要改的东西
//把list重新写入文件本回答被提问者采纳 参考技术B 貌似不可以。
我都是把所有内容放到一个字符串里,然后修改这个字符串,然后将整个字符串写回文件。 参考技术C 没看明白
你如何修改java属性文件中的值
【中文标题】你如何修改java属性文件中的值【英文标题】:How do you modify values in java properties file 【发布时间】:2016-02-27 02:41:18 【问题描述】:我有一个 config.properties 文件,其中包含可配置的属性,例如部署在 tomcat 上的 webapp 中的数据库连接详细信息。例如
local.driver: com.mysql.jdbc.Driver
local.username:myuser
local.password:mypass
dev.driver: com.mysql.jdbc.Driver
dev.username:mydevuser
dev.password:mydevpass
我可以使用 spring Environment 对象或@Value 从 config.properties 检索值。 我的问题是如何让 Spring 的环境对象在本地运行时选择本地属性,而在 dev 上运行时选择开发属性?此外,保存敏感数据听起来也不对,例如生产数据库连接 属性文件中的详细信息将在代码库中浮动。那么在生产环境中如何添加生产细节呢?理想情况下,我想在我喜欢的时候更改它们,而不必重新部署应用程序。我的方向正确吗?
注意 - 我在 SO 上看到的所有答案都讨论了在 Java 代码中更改这些属性。我不想这样做,我希望能够独立于应用程序代码配置这些值。
谢谢
【问题讨论】:
我不是这方面的专家。但我认为你可以使用Maven profiles 来面对这个问题——每个人都有一个配置文件。 【参考方案1】:您可以查看spring profiles 来为特定环境加载特定文件。
或者,您还可以使用 JNDI 属性或容器中设置的环境属性,对应用程序上下文中加载属性的文件进行参数化。
例子:
<context:property-placeholder ignore-unresolvable="true" location="$env.config.file:classpath*:META-INF/spring/profiles/dev/dev.properties" />
env.config.file 可以在启动时使用 -Denv.config.file= 在容器级别(比如 Tomcat)设置。通过这样做,Spring 会自动在系统 props 中找到该属性并替换它。如果您没有显式设置它(例如,在您可能使用其他容器的 dev 中,例如 jetty),它将使用给定的默认值(在本例中为 dev.properties)。
通过将属性文件放在war/ear之外,可以随意更改,只需要重启上下文即可。或者,您可以查看可重新加载的属性占位符。如果您不想将密码存储在战争中,这也很有帮助。
要对属性文件中的信息进行加密,如果您使用的是 Spring 3,还可以查看:http://www.jasypt.org/spring3.html。
【讨论】:
【参考方案2】:对于选择 env 特定值,您有几个选项
如果您可以基于 env 创建多个属性文件,那么您可以使用 Spring 配置文件功能(即 spring.profiles.active),这将允许控制属性文件通过 JVM 参数加载。 如果您仍想将所有内容保存在单个文件中,则可以覆盖 PropertyPlaceholderConfigurer 以从 JVM 参数中获取环境详细信息或默认为某个值在安全问题上,一种方法是将加密的密码存储在prop文件中。
【讨论】:
以上是关于java中如何在文件中修改某行信息的主要内容,如果未能解决你的问题,请参考以下文章
如何算出memo或richedit文本中某行的准确位置(像素坐标值)?解决问题者