问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么获取java项目中的一个文件

发布网友 发布时间:2022-05-08 08:34

我来回答

1个回答

热心网友 时间:2022-05-19 13:25

  平时写程序的时候,很多时候提示文件找不到,而抛出了异常,现在整理如下

  一 相对路径的获得
  说明:相对路径(即不写明时候到底相对谁)均可通过以下方式获得(不论是一般的java项目还是web项目)
  String relativelyPath=System.getProperty("user.dir");
  上述相对路径中,java项目中的文件是相对于项目的根目录
  web项目中的文件路径视不同的web服务器不同而不同(tomcat是相对于 tomcat安装目录\bin)

  二 类加载目录的获得(即当运行时某一类时获得其装载目录)
  1.1)通用的方法一(不论是一般的java项目还是web项目,先定位到能看到包路径的第一级目录)

  InputStream is=TestAction.class.getClassLoader().getResourceAsStream("test.txt");
  (test.txt文件的路径为 项目名\src\test.txt;类TestAction所在包的第一级目录位于src目录下)

  上式中将TestAction,test.txt替换成对应成相应的类名和文件名字即可

  1.2)通用方法二 (此方法和1.1中的方法类似,不同的是此方法必须以'/'开头,
  InputStream is=Test1.class.getResourceAsStream("/test.txt");
  (test.txt文件的路径为 项目名\src\test.txt,类Test1所在包的第一级目录位于src目录下)

  三 web项目根目录的获得(发布之后)
  1 从servlet出发

  可建立一个servlet在其的init方法中写入如下语句
  ServletContext s1=this.getServletContext();
  String temp=s1.getRealPath("/"); (关键)
  结果形如:D:\工具\Tomcat-6.0\webapps\002_ext\ (002_ext为项目名字)

  如果是调用了s1.getRealPath("")则输出D:\工具\Tomcat-6.0\webapps\002_ext(少了一个"\")
  2 从httpServletRequest出发

  String cp11111=request.getSession().getServletContext().getRealPath("/");

  结果形如:D:\工具\Tomcat-6.0\webapps\002_ext\

  四 classpath的获取(在Eclipse中为获得src或者classes目录的路径)
  方法一 Thread.currentThread().getContextClassLoader().getResource("").getPath()
  eg: String t=Thread.currentThread().getContextClassLoader().getResource("").getPath();
  System.out.println("t---"+t);
  输出:t---/E:/order/002_ext/WebRoot/WEB-INF/classes/

  方法二 JdomParse.class.getClassLoader().getResource("").getPath() (JdomParse为src某一个包中的类,下同)

  eg:String p1=JdomParse.class.getClassLoader().getResource("").getPath();
  System.out.println("JdomParse.class.getClassLoader().getResource--"+p1);

  输出: JdomParse.class.getClassLoader().getResource--/E:/order/002_ext/WebRoot/WEB-INF/classes/
  另外,如果想把文件放在某一包中,则可以 通过以下方式获得到文件(先定位到该包的最后一级目录)
  eg String p2=JdomParse.class.getResource("").getPath();
  System.out.println("JdomParse.class.getResource---"+p2);
  输出: JdomParse.class.getResource---/E:/order/002_ext/WebRoot/WEB-INF/classes/jdom/ (JdomParse为src目录下jdom包中的类)

  四 属性文件的读取:
  方法 一
  InputStream in = lnew BufferedInputStream( new FileInputStream(name));    Properties p = new Properties();   p.load(in);

  注意路径的问题,做执行之后就可以调用p.getProperty("name")得到对应属性的值

  方法二

  Locale locale = Locale.getDefault();
  ResourceBundle localResource = ResourceBundle.getBundle("test/propertiesTest", locale);
  String value = localResource.getString("test");
  System.out.println("ResourceBundle: " + value);

  工程src目录下propertiesTest.properties(名字后缀必须为properties)文件内容如下:

  test=hello word
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怀孕甲状腺激素偏高正常吗 怀孕检查甲状腺素偏高是什么原因引起的 怀孕了甲状腺功能偏高是怎么回事 怀孕甲状腺高是什么引起的 孕中期促甲状腺激素偏高是什么原因 重钢别墅靠谱吗 重刚别墅的致命缺点 重钢别墅的优点和缺点各是什么 积食可以吃什么 车子换了点火线圈,分缸线,火花塞以后车子打不着。这是什么原因 急需各种java项目的需求文档 Java项目中的文档应该怎样些,包括概要设计和详细设计! java程序员需要些什么文档 Java程序员,你们在项目里写文档么? 梦见自己停在路边的轿车被大卡车压住了,大卡车司机还不让报警,打电话喊老公来。老公和别的女人挽着胳膊 梦见大货车把二辆小车撞飞到我这边 差一点砸到我? 梦见妈妈开着大车把小车压扁了 梦见一辆大卡车和一辆小轿车同方向转弯,但是大卡车突然倒车把小轿车压扁了。请各位帮我解解梦 梦见媳妇在工地上开小车被大货车压没影了是什么意思 求解 解梦:我梦见一辆装满土的大卡车把一辆小车撞扁了,这是什么意思? 梦到好多大鱼是什么意思? MP3怎么正确的关机? MP3不能开机怎么办 怎么打开mp3? mp3如何关闭 怎样打开mp3开关 mp3的歌词开关怎么用?歌词下载有什么要求? 请问1.这个Mp3的开关在哪里? 2.Hold键代表什么意思? 3.如何进行充电?第一次充电有什么特别要求吗? 我的MP3开关机有两种方式,一是长按键,一是直接用”ON--OFF” 请问两种方式有何不同? mp3开关键坏了怎么办 - 信息提示 青岛农林科技大学分数线 青岛农业大学公费农科生的具体情况如何? 青岛农业大学免费农科生分文理科好还是不分好 青岛农业大学是几本?对山东考生来说分数线是多少? 公费农科生是干什么的。 激光电视投影仪,自带反光镜头,画面超清色彩饱和 Go的动词短语? go的词组及例句 说出5个与go有关的词组 关于go的词组 长春哪里买整张貂皮大衣的,价格在5000---7000元左右的 长春哪里有改皮装的地方? 吉林长春哪改貂皮好? 长春貂皮大衣修复多少钱 长春哪有貂皮大衣以旧换新 长春哪里貂皮大衣最便宜 矿物质电缆安装施工时外皮破损,怎么处理? 6kV高压电缆外层绝缘皮破损了,应该怎么处理 矿用电缆破损需不需要更换?不更换的话如何处理?