很多人想知道如何用java读取和修改项目外的properties文件,通过这个程序告诉大家方法,就算把jar文件作出exe 也可以读取和修改properties文件的参数的键和值。
此程序可直接执行,只需将用到的几个property文件放到project的跟目录下即可
package com.start;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Properties;
import java.io.*;
/**
* 读取properties配置文件信息,修改配置文件内容,并启动使用该配置文件的应用程序
*
* @author www.jianfei5u.com
*/
public class J2MEServerStart extends JFrame {// 配置启动窗口类
private static final long serialVersionUID = -56637913339605867L;
JPanel contentPane;
private String stateServerIP;
private String stateServerPort;
// ***********//程序界面
JPanel jPanel1 = new JPanel();
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
JTextField loginName = new JTextField();
JLabel jLabel3 = new JLabel();
JTextField password = new JTextField();
JPanel jPanel2 = new JPanel();
JButton start = new JButton();
JButton quit = new JButton();
public static void main(String[] args) {// 主程序
J2MEServerStart f = new J2MEServerStart();
f.setVisible(true);
}
public J2MEServerStart() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
loadStateLoginInfo();
} catch (Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(null);
this.setResizable(false);
// this.setSize(new Dimension(344, 245));
// 设置窗体位置
this.setLocation(400, 100);
// 设置窗体大小
this.setSize(new Dimension(280, 220));
// 设置窗体标题
this.setTitle("启动服务器并登录集群服务器");
jPanel1.setBounds(new Rectangle(2, 3, 260, 100));
jPanel1.setLayout(null);
jLabel1.setText("请输入登录信息");
jLabel1.setBounds(new Rectangle(5, 7, 190, 18));
jLabel2.setText("用户名");
jLabel2.setBounds(new Rectangle(40, 35, 80, 18));
loginName.setBounds(new Rectangle(100, 35, 90, 22));
jLabel3.setText("密 码");
jLabel3.setBounds(new Rectangle(40, 75, 80, 18));
password.setBounds(new Rectangle(100, 75, 90, 22));
// 确认按钮
jPanel2.setBounds(new Rectangle(2, 100, 260, 80));
jPanel2.setLayout(null);
start.setText("启动");
start.setBounds(new Rectangle(40, 27, 99, 29));
start.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
start_mouseClicked(e);
}
});
// 详细配置按钮
quit.setText("详细配置");
quit.setBounds(new Rectangle(150, 27, 99, 29));
quit.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
J2MEServerSet f = new J2MEServerSet();
f.setVisible(true);
}
});
contentPane.add(jPanel1, null);
jPanel1.add(jLabel1, null);
jPanel1.add(jLabel2, null);
jPanel1.add(loginName, null);
jPanel1.add(jLabel3,null);
jPanel1.add(password,null);
contentPane.add(jPanel2, null);
jPanel2.add(start, null);
jPanel2.add(quit, null);
}
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
void start_mouseClicked(MouseEvent e) {// 点击启动按扭
Properties ppt = System.getProperties();
String path = ppt.getProperty("user.dir");
String user = loginName.getText();
String pwd = password.getText();
try {
this.writeProp(path, "StateConfiguration.properties", "ServerLoginName", user);
} catch (IOException e1) {
e1.printStackTrace();
}
try {
this.writeProp(path, "StateConfiguration.properties", "ServerPassword", pwd);
} catch (IOException e1) {
e1.printStackTrace();
}
//severCore.exe是在本项目根目录下的一个可执行文件
String pathAddFile = path + File.separator + "severCore.exe";
Runtime rn = Runtime.getRuntime();
// 启动
try {
rn.exec("cmd /c start " + pathAddFile);
this.dispose();
System.exit(0);
} catch (IOException e1) {
e1.printStackTrace();
}
}
void newuser_mouseClicked(MouseEvent e) {// 清除按纽
}
void quit_mouseClicked(MouseEvent e) {// 关闭按扭
this.dispose();
System.exit(0);
}
/**
* 加载状态服务器配置文件,获得状态服务登录账号和密码
*
* @return
* @throws IOException
*/
public void loadStateLoginInfo() throws IOException {
Properties psys = System.getProperties();
String path = psys.getProperty("user.dir");// 程序所在的路径;
InputStream inputStream = null;
if (new File(path + "\\StateConfiguration.properties").exists()) {
File file = new File(path + "\\StateConfiguration.properties");
inputStream = new FileInputStream(file);
} else {
inputStream = this.getClass().getClassLoader().getResourceAsStream(
"StateConfiguration.properties");
}
Properties p = new Properties();
p.load(inputStream);
loginName.setText(p.getProperty("ServerLoginName"));
password.setText(p.getProperty("ServerPassword"));;
}
// public void loadDBSet() throws IOException{
// if(dbType.get)
// }
/**
* 设置property文件.
*
* @param key
* @param value
* @return String
* @throws IOException
*/
String writeProp(String filePath, String fileName, String key, String value)
throws IOException {
String strResult = "";
String pathAddFile = "";
if (filePath.equals("")) {
pathAddFile = fileName;
} else {
pathAddFile = filePath + File.separator + fileName;
}
File aFile = new File(pathAddFile);
if (!aFile.exists()) {
strResult = "error";
return strResult;
}
InputStream inputStream = null;
try {
inputStream = new FileInputStream(aFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Properties p = new Properties();
p.load(inputStream);
Object s = p.setProperty(key, value);
FileOutputStream output = new FileOutputStream(aFile);
p.store(output, "");
return strResult;
}
}
马上为大家推出 多用户的P2P在线聊天程序 对开发过程进行详细的讲解,该程序时经过本人调试,完全可以运行 ,需要的情参看:http://java161.iteye.com/blog/616113
分享到:
相关推荐
如果需要修改Properties文件的内容,可以使用`store()`方法将其写回文件。 ```java FileOutputStream output = new FileOutputStream("config.properties"); prop.setProperty("key", "新值"); prop.store...
在IT行业中,"加壳"是指对可执行文件(如EXE)进行处理,将其内容包装在一个外壳程序中,以实现各种目的,如保护原文件免受反编译、调试或病毒攻击,或者添加额外的功能。在C#编程环境下,我们可以使用特定的工具和...
通过上面的代码,我们可以看到,读取配置文件非常简单,只需要使用Properties类和InputStream类就可以了。Properties类是一个非常重要的类,它可以用来读取配置文件,而InputStream类可以用来读取文件流。 在实际...
7. 保存并同步:编辑完成后,保存文件并更新到项目中,确保代码可以正确读取资源文件。 对于Eclipse和MyEclipse用户来说,掌握如何有效地使用properties编辑器插件是提升工作效率的关键。通过熟练运用...
在Spring Boot框架中,配置文件的读取是应用启动过程中的一个重要环节。Spring Boot提供了一种方便的机制来读取和管理配置文件,这主要得益于其对Spring Environment抽象的使用。在Spring Boot应用中,通常使用...
配置文件通常存储在`classpath`下的某个位置,以便程序在运行时能够读取和解析这些文件。例如,一个名为`config.properties`的配置文件可能包含数据库连接信息、系统设置等,这些数据需要在程序运行过程中动态获取。...
在转换为.exe时,我们需要确保这些配置文件能在运行时被读取和修改。一种常见做法是将配置文件放置在用户目录下,这样它们就不会被打包到.exe中,用户可以自由编辑。 4. **使用exe4j步骤**: - 首先,下载并安装...
Spring Boot会自动读取这个文件并在启动时打印。文本 Banner 可以包含ANSI转义码来实现颜色效果。 2. **图片方式修改:** 如果你想使用图像作为启动图标,可以选择PNG或JPEG格式的图片。将图片文件(例如:`logo....
本主题将深入探讨如何创建、读取和修改配置文件,以及如何利用配置文件实现程序使用次数的限制。 首先,我们需要理解配置文件的类型。在大多数情况下,配置文件可以是文本文件(如`.ini`,`.properties`)或JSON、...
标题中的“WPF动态调用资源文件”特指在WPF应用程序中,如何根据用户交互或程序逻辑灵活地加载和使用ResourceDictionary中的资源。描述中提到的“WPF列表选择,动态调用ResourceDictionary内资源”进一步说明了这一...
可以创建针对不同环境(如`dev`, `test`, `prod`)的配置文件,如`application-dev.properties`,并在启动时通过`--spring.profiles.active`指定当前环境。 9. **自动配置** Spring Boot的自动配置特性可以根据类...
2. **读取配置文件**:程序启动时,需要读取配置文件以获取用户的设定。这通常通过编程语言提供的库函数完成,如Python中的`configparser`模块,Java中的`Properties`类,或C#的`ConfigurationManager`类。程序会...
通过这种方式,我们可以在程序运行时动态修改配置文件中的信息,提高了系统的灵活性和安全性。 #### 四、总结 本文介绍了如何利用反射机制来修改Hibernate配置文件中的数据库连接信息,并通过自定义`...
在Spring框架中,属性文件(通常为`.properties`格式)被广泛用来存储应用程序的配置信息,如数据库连接、邮件设置等。这些配置信息可以独立于源代码,方便管理和修改。本文将详细介绍如何在Spring中读取和使用这些...
数据文件和数据库表的对应关系通过程序里的config/sys.properties文件配置指定,格式如下: field_0 = XDDH field_1 = YXN field_2 = YYR ...... 以上配置的意思是:excel数据文件里的第0列对应表里的XDDH字段,第1...
此类文件主要用于存储程序的配置信息,如数据库连接参数、系统参数等,以键值对的形式存在,易于读取和修改。在JSMDefaultDBConnMgr模块中,这个文件扮演着数据库连接池配置的角色,直接影响到数据库连接的创建、...
本项目中,开发者查找并定位到游戏中关于阳光、金钱和关卡进度的内存地址,然后修改这些地址的值,实现了游戏的作弊功能。 3. Windows Forms: Form1.Designer.cs和Form1.cs文件是Windows Forms应用程序的一部分。...
在RED5启动时,会自动读取`webapps`目录下的所有配置文件。对于新应用,可以参考`doc/templates/myapp`目录下的模板来创建初始配置。 总结,RED5的配置文件系统旨在提供灵活性和可扩展性,使用户能够根据需求调整...
在启动过程中,Tomcat会检查并解析`webapps`目录下的所有应用,读取每个应用的`WEB-INF/web.xml`,配置Servlet和过滤器的映射,设置会话超时和其他运行时参数。了解启动流程有助于优化应用性能和排查问题。 Servlet...
4. 在应用程序启动时,Spring Boot 容器将自动将 `application.properties` 文件中的配置信息加载到 Spring 容器中。然后,我们可以在项目中使用这些配置信息。 Spring Boot 配置文件加载机制 在 Spring Boot 中...