java中File类,为什么用new File指向的文件老是为空代码如图,இ௰இ

java中File类,为什么用new File指向的文件老是为空代码如图,இ௰இ,第1张

路径不写,只写文件名,那么使用的相对路径就是java命令执行时所在路径,这个就比较模糊了,因为使用eclipse编译器或者使用java命令行执行JAVA代码,命令的当前路径可能是不一样的,而且你的执行的类有可能在某个包里面,而包在文件系统里被识别为文件夹,那么当前执行路径就又不一样了,甚至哪怕你在eclipse里面把要读写的文件放到了合适的路径下,在开发环境下可以正常读写了,但JAVA工程部署打包的时候,再执行,JAVA命令的当前路径不一样了,又找不到文件了。所以还是建议写绝对路径,或者是不会改变的相对路径,例如获得工程的当前路径之类,举例:

在java类中:

获取当前的classpath的绝对URI路径

thisgetClass()getClassLoader()getResource(“/”)getPath()

thisgetClass()getClassLoader()getResource(“”)getPath()

获取当前类的加载目录,如果有“/”,获取当前类的所在工程路径

thisgetClass()getResource(“”)getPath()

thisgetClass()getResource(“/”)getPath()

项目的绝对路径

thisgetClass()getClassLoader()getResource(“”)getPath();

另一种获取当前的classpath的绝对uri路径的方法

ThreadcurrentThread()getContextClassLoader()getResource(“/”)getPath()

ThreadcurrentThread()getContextClassLoader()getResource(“”)getPath()

项目的绝对路径

ThreadcurrentThread()getContextClassLoader()getResource(“”)getPath()

获取项目的路径

directorygetCanonicalPath()

在servlet中:

得到工程目录(参数具体到包名)

requestgetSession()getServletContext()getRealPath(“”)

得到IE地址栏地址

requestgetRequestURL()

得到相对地址

requestgetRequestURI()

获取站点的绝对路径

requestgetServletContext()getRealPath(“/”)

requestgetRealPath(“/”)

1使用javautilProperties类的load()方法

示例

//文件在项目下。不是在包下!!

InputStream in = new BufferedInputStream(new FileInputStream("demoproperties")) ;

Properties p = new Properties();

pload(in) ;

String className2 = pgetProperty("databasedriver");

String url = pgetProperty("databaseurl");

String user = pgetProperty("databaseuser");

String password = pgetProperty("databasepass");

2 使用javautilResourcebundle类的getbundle()方法

//前面没有“/”代表当前类的目录

示例:

//文件和类在同一个包下,注意它的文件名和后缀!!是调换的,

ResourceBundle resource = ResourceBundlegetBundle("propertiesjdbc");

String className = resourcegetString("databasedriver");

String url = resourcegetString("databaseurl");

String user = resourcegetString("databaseuser");

String password = resourcegetString("databasepass");

3使用javautilPropertyResourceBundle类的构造函数

示例:

// 文件在项目下  或者  src/demoproperties

//  在 src/demoproperties  写成 new FileInputStream("src/demoproperties")

InputStream in = new BufferedInputStream(new             FileInputStream("demoproperties"));

ResourceBundle rb = new PropertyResourceBundle(in) ;

String className4 = rbgetString("databaseurl");

4使用class变量的getresourceasstream()方法

示例:

InputStream in =PropertiesclassgetResourceAsStream("/properties/jdbcproperties");

// 包点类名下的。

// 如果找不到带有该名称的资源,则返回 null

Properties p = new Properties();

pload(in);

Systemoutprintln(pgetProperty("databaseurl"));

5使用classgetclassloader()所得到的javalangclassloader的getresourceasstream()方法 

// properties 文件 要放在src下面,否则找不到啊

示例:        

InputStream in = 类名classgetClassLoader()getResourceAsStream("jdbcproperties");

Properties p = new Properties() ;

pload(in);

Systemoutprintln(pgetProperty("databasepass"));

6使用javalangclassloader类的getsystemresourceasstream()静态方法  

示例:

// 同包名下

InputStream in = ClassLoadergetSystemResourceAsStream("properties/jdbcproperties");

Properties p = new Properties() ;

pload(in) ;

Systemoutprintln(pgetProperty("databaseuser"));

总结:如果是 在WEB上读取properties文件,写成下面这种。上面写的那些只在 JavaSE 中

String path = ThreadcurrentThread()getContextClassLoader()getResource("")getPath();

Systemoutprintln(path);

InputStream in = new FileInputStream(new File(path+Fileseparator+"mysqlproperties"));

Properties prop = new Properties();

以上就是关于java中File类,为什么用new File指向的文件老是为空代码如图,இ௰இ全部的内容,包括:java中File类,为什么用new File指向的文件老是为空代码如图,இ௰இ、JAVA中如何读取src下所有的properties文件、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存