十万火急!!!打成jar包之后的文件写入问题。 我现在把程序打成了一个jar包,但程序需要对一个properties文件进行读写操作,这个文件我想放到和这个jar包平行的位置,请问我该怎么在程序里面写这个读写函数,而且这个properties文件该放到什么地方。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.Properties;public class Config{ private String path; private Properties config; public Config(String path) { this.path = path; } public boolean loadConfig() { config = new Properties(); FileInputStream fis = null; boolean result = false; try { fis = new FileInputStream(path); config.load(fis); result = true; } catch(Exception e) { e.printStackTrace(); } finally { if(fis != null) { try { fis.close(); } catch(Exception e) { e.printStackTrace(); } } } return result; } public void saveConfig() { FileOutputStream fos = null; try { fos = new FileOutputStream(path); config.store(fos, ""); } catch(Exception e) { e.printStackTrace(); } finally { if(fos != null) { try { fos.close(); } catch(Exception e) { e.printStackTrace(); } } } } public void setPropertie(String key, String value) { config.setProperty(key, value); } public String getProperty(String key) { return config.getProperty(key); } public String getPath() { return path; } public void setPath(String path) { this.path = path; }}这个类直接拿去用,至于Properties路径嘛,如果是主目录就直接写文件名字好了,否则就写".//目录名//文件名" 一个建议,你在你的程序的main函数中 File fl = new File("a.properies");然后再 sysout fl.getAbsolu..(); 看看他的位置,然后你再放到相应的位置看下也可以先得到 user.dir System.getProperty("user.dir");来得到你的目录在哪,然后再确定相关文件的放置 1 .把读取PROPERTIES文件的路径写成传参的形式.....或2. 在程序里用相对路径.... craky,我这样子用为什么提示:java.lang.NullPointerException public String getPara(String prName) { Config con=null; con.setPath("config.properties"); String temp=con.getProperty(prName); return temp; }不知道我这样的用法对不对啊 craky,不知道我用你的类按下面那样子写对不对: public String getPara(String prName) { Config con=null; con.setPath("config.properties"); String temp=con.getProperty(prName); return temp; }但是已经弹出了 java.lang.NullPointerException Config没初始化呀,呵呵 public String getPara(String prName) { Config con = new Config("config.properties"); String temp = con.getProperty(prName); return temp; } 那个setPath的方法没用的,可以删掉如果要用的话你得再写一个无参构造方法,这样就可以按如下的方法用Config con = new Config();con.setPath("config.properties"); 之前用的是“/config.properties”相对地址,然后放到bin的下面才能读取,后来用别人的类,使用“../config.properties”路径,放到和bin,src平行的文件夹才能读取,但是我用fat—jar做成jar包后,第二种情况直接就读不出来配置文件,第一种能读出来,但打到包里面去了,无法修改 主要是我上面很多地方都用到了setpara函数,删掉重新改工作量太大 错了,还少了一句,呵呵,不好意思 public String getPara(String prName) { Config con = new Config("config.properties"); con.loadConfig(); String temp = con.getProperty(prName); return temp; } 再者我用这个Config con = new Config(); 为什么会提示构造函数未定义? 那你给Config里加一个方法 public Config() {}然后这样用 public String getPara(String prName) { Config con = new Config(); con.setPath("config.properties"); con.loadConfig(); String temp = con.getProperty(prName); return temp; } 我根据2,3楼写的测试方法:public class ConfigTest { public static void main(String[] args){ String filepath = System.getProperty("user.dir")+"\\config\\config.properties"; System.out.println(filepath); Config config = new Config(filepath); config.loadConfig(); config.setPropertie("test2", "You are ready"); config.saveConfig(); }} 就跟你的jar包放在同一目录下,然后直接config.properties 我的config.properties文件在工程目录下的config文件夹下。config.properties由变为 不过好像回写有点问题,写不进去 Config con = new Config("config.properties"); con.loadConfig(); con.setPropertie(keyName, prName); con.setPropertie(keyName, prName);完了要save一下的 con.saveConfig();参看16楼的,hoho 非常感谢,问题以解决,谢谢大家提供帮助,尤其craky 呵呵,免礼免礼同时BS那个java 2000 net什么的 呵呵,免礼免礼同时BS那个java 2000 net什么的 IE6下保存时文件名称时文件名不一致 java JTable中如何添加一行数据! java 最新的版本 支持 goto 语句么? 帮助改一下程序 Hibernate里得一个小问题,解决给分! 只有菜鸟才赶问的问题:"\n","\r","\r\n"的区别在哪里?别笑我,但是请告诉我! 初学者是学JAVA好还是学JAVA2好! 如何对文本文件进行查询? 找不到原因! 請問在java 中 applet 為什么用html 調用時, 怎么調來調去都是調我第一次編輯CLASS的呢? 请教,Java如何解压gzip数据成byte[]数组? 关于toString()的用法和具体介绍???
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;public class Config
{
private String path; private Properties config; public Config(String path)
{
this.path = path;
} public boolean loadConfig()
{
config = new Properties();
FileInputStream fis = null;
boolean result = false;
try
{
fis = new FileInputStream(path);
config.load(fis);
result = true;
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
if(fis != null)
{
try
{
fis.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
} return result;
} public void saveConfig()
{
FileOutputStream fos = null; try
{
fos = new FileOutputStream(path);
config.store(fos, "");
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
if(fos != null)
{
try
{
fos.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
} public void setPropertie(String key, String value)
{
config.setProperty(key, value);
} public String getProperty(String key)
{
return config.getProperty(key);
} public String getPath()
{
return path;
} public void setPath(String path)
{
this.path = path;
}
}
这个类直接拿去用,至于Properties路径嘛,如果是主目录就直接写文件名字好了,否则就写".//目录名//文件名"
然后再 sysout fl.getAbsolu..(); 看看他的位置,然后你再放到相应的位置看下
也可以先得到 user.dir System.getProperty("user.dir");来得到你的目录在哪,然后再确定相关文件的放置
或
2. 在程序里用相对路径....
public String getPara(String prName) {
Config con=null;
con.setPath("config.properties");
String temp=con.getProperty(prName);
return temp;
}
不知道我这样的用法对不对啊
public String getPara(String prName) {
Config con=null;
con.setPath("config.properties");
String temp=con.getProperty(prName);
return temp;
}
但是已经弹出了 java.lang.NullPointerException
public String getPara(String prName)
{
Config con = new Config("config.properties");
String temp = con.getProperty(prName);
return temp;
}
Config con = new Config();
con.setPath("config.properties");
public String getPara(String prName)
{
Config con = new Config("config.properties");
con.loadConfig();
String temp = con.getProperty(prName);
return temp;
}
那你给Config里加一个方法 public Config()
{}
然后这样用
public String getPara(String prName)
{
Config con = new Config();
con.setPath("config.properties");
con.loadConfig();
String temp = con.getProperty(prName);
return temp;
}
public static void main(String[] args){
String filepath = System.getProperty("user.dir")+"\\config\\config.properties";
System.out.println(filepath);
Config config = new Config(filepath);
config.loadConfig();
config.setPropertie("test2", "You are ready");
config.saveConfig();
}
}
就跟你的jar包放在同一目录下,然后直接config.properties
config.properties由
变为
Config con = new Config("config.properties");
con.loadConfig();
con.setPropertie(keyName, prName);
同时BS那个java 2000 net什么的
同时BS那个java 2000 net什么的