JAVA读取了本地TXT,但是导出JAR并运行时提示系统找不到指定路径求助

JAVA读取了本地TXT,但是导出JAR并运行时提示系统找不到指定路径求助,第1张

在编写代码时使用的是绝对路径来访问的这个文件,然而这个文件是在jar包中的,jar包中有自己的一套Url编址:jar:<url>!/{entry})。所以导致运行时无法访问到文件。

解决办法就是在构造File对象时使用url来构造,而文件的url获取使用ClassLoader

URL fileURL=thisgetClass()getResource("0txt");

File file = new File(fileURL);

FileInputStream fis = new FileInputStream(file);

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fis));

两种办法 第一: File f = new File(thisgetClass()getResource("/")getPath());

f = new File(fgetPath() + "/conf/configproperties");

注:fgetPath()即为当class所在的绝对路径。如:c:\javasrc\web-inf\classes

然后,对文件对象进行处理,就能把配置信息读取出来了,但是加入如上class被打包成jar文件,那么,在程序执行到这里时,就会无法找到配置文件,那么该如何处理呢?

处理方法如下:

String s_config="conf/configproperties";

File file= new File(StringvalueOf(ClassLoadergetSystemResource(config)));

String filepaths= filegetPath(); 第二:用JarFile JarFile jarFile = new JarFile("thefilejar"); 这个是专门用来读jar文件的

给你个例子,读取configproperties文件。

文件内容(值自己加)如下:

TestHosts =

FormalHosts =

TestConfig =

FormalConfig =

HostsPath =

ConfigPath =

读取文件的类如下:

import javaioBufferedInputStream;

import javaioFileInputStream;

import javaioFileNotFoundException;

import javaioIOException;

import javaioInputStream;

import javaioUnsupportedEncodingException;

import javautil;

public class EvnConfig{

public static Properties PROPERTIES = new Properties();

static{

String proFilePath = SystemgetProperty("userdir")+"/configproperties";

//Systemoutprintln(proFilePath);

//InputStream propertiesStream = EvnConfigclassgetClassLoader()getResourceAsStream(proFilePath);

InputStream in = null;

try {

in = new BufferedInputStream(new FileInputStream(proFilePath));

} catch (FileNotFoundException e1) {

// TODO Auto-generated catch block

e1printStackTrace();

}

try{

PROPERTIESload(in);

}catch(IOException e){

Systemoutprintln("properties创建失败!");

eprintStackTrace();

}

//Systemoutprintln("EvnConfigtestHosts:"+PROPERTIESgetProperty("TestHosts"));

}

public static final String testHosts = changeCode(PROPERTIESgetProperty("TestHosts"));

public static final String formalHosts = changeCode(PROPERTIESgetProperty("FormalHosts"));

public static final String testConfig = changeCode(PROPERTIESgetProperty("TestConfig"));

public static final String formalConfig = changeCode(PROPERTIESgetProperty("FormalConfig"));

public static final String hostsPath = changeCode(PROPERTIESgetProperty("HostsPath"));

public static final String configPath = changeCode(PROPERTIESgetProperty("ConfigPath"));

public static String changeCode(String str){

String toStr = "";

try {

//Systemoutprintln(str + "转换");

toStr = new String(strgetBytes("ISO-8859-1"),"GB2312");

//Systemoutprintln(str + "转换成功!");

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

Systemoutprintln(str + "转换失败!");

eprintStackTrace();

}

return toStr;

}

}

建立一个JavaResources对象,并将它初始化为一个包含我们感兴趣资源的JAR文件--Imagesjar。

然后使用JavaResources类的getResource()方法从logogif取出原始数据,然后调用AWT工具箱的createImage()方法从原始数据建立一个Image对象实例。

建立一个JavaResources对象,并将它初始化为一个包含我们感兴趣资源的JAR文件--Imagesjar。

然后使用JavaResources类的getResource()方法从logogif取出原始数据,然后调用AWT工具箱的createImage()方法从原始数据建立一个Image对象实例。

你是用eclipse写的吧,在eclipse中 src包不是一个文件夹,而是代表你的class文件存放的地址,在你这里,src代表的就是Sysjar!这个文件夹,!的没有特殊意思,就只是这个文件夹名字的组成而已,命名规则中不能用“”,“”,“/”命名,!是可以用的

jar里的properties文件,只能读取,不能写入。ResourceBundle rb=ResourceBundlegetBundle("pack/set/set", LocaleCHINA);

ResourceBundle是java开发中非常实用的一个类,主要用来处理应用程序多语言这样的国际化问题。

如果你的应用程序如果有国际化的需求,可以考虑使用ResourceBundle, 你要做的就是给出满足特定格式的Properties 文件,例如

resourcepropreties

resource_zh_CNproperties

resource_ja_JPproperties

然后应用程序使用ResourceBundlegetBundle(“resource”, locale) 就可以自动的搜索的相应Locale的Properties 文件。

以上就是关于JAVA读取了本地TXT,但是导出JAR并运行时提示系统找不到指定路径求助全部的内容,包括:JAVA读取了本地TXT,但是导出JAR并运行时提示系统找不到指定路径求助、Java eclipse导出的jar怎样读写里面的properties文件、java 程序打包为jar发布后,读取配置文件路径出错 ,怎样获取配置文件路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9723609.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存