导航:首页 > 文件教程 > 读取classpath下文件

读取classpath下文件

发布时间:2023-01-01 10:40:36

① 如何获取classpath下实现某接口的所有类

如果你自己也不知道这个接口有哪些实现类的,采用java默认的ClassLoader是没有办法获得所有实现类的,因为ClassLoader是在程序运行期间才会加载类到static区域,即如果你的程序需要使用某一个class,jvm发现这个class还没有被ClassLoader加载,就会主动去加载,否则就跳过,你没办法知道那些未被加载的实现类。
如果你知道有哪些实现类的话,那就简单了,自己配置一个xml文件,把实现类的完整类名写在这个xml文件,再写一个解析程序,迭代每一个类名,直接用Class.forName加载就可以了。
甚至你可以去解析所有的java源文件或class文件,像eclipse之类的IDE就是这么干的,它管理工程下的所有class,解析这些class,这样我们写程序的时候,才有代码提示之类的功能。
如果你纯粹只想知道这个接口的实现类,在eclipse里面选中接口,按下F4,eclipse会为你列出所有的实现类

② 关于web工程中java类如何获取webapp路径下的文件

第一复步: 先获得classpath路径制

Stringclasspath=this.getClass().getResource("/").getPath().replaceFirst("/","");

这样子可以得到classpath路径,类似于:

F:/projects/JavaStudyParent/study-springmvc-junit-test/target/springmvc-junit-test/WEB-INF/classes/


然后把WEB-INF/classes截取就能获得WebAPP目录啦:

StringwebappRoot=classpath.replaceAll("WEB-INF/classes/","");

得到的结果就是:

F:/projects/JavaStudyParent/study-springmvc-junit-test/target/springmvc-junit-test/


通过这个路径你就能获取该文件夹下的所有文件啦

③ 如何CLASSPATH下的resource.properties文件进行读写操作

下面的代码是对resource.properties文件进行读操作:
Properties props = new Properties();
InputStream input= this.getClass().getClassLoader().getResourceAsStream("resource.properties");

try{
props.load(input);
}catch(Exception e){
System.err.println("CheckLogin:不能读取属性文件. " + "请确保resource.properties在CLASSPATH指定的路径中");
}
this.midaUser = props.getProperty("User");
this.midaPassword = props.getProperty("Password");

即分别读取该文件中User和Password的值,现在想对User和Password的值进行修改

④ 关于读取Properties文件的相对路径问题,怎么写是正确的

FileInputStream只能定位绝对路径,所以你填入相对路径当然找不到。
读取资源文件一般根据上下文环境分为两种情况。
第一种是非WEB应用的环境中,只需要简单的通过类加载器的getResourceAsStream方法读取。
例如,classpath根目录下有一个setting.properties文件,可以这样读取
Java代码 收藏代码
InputStream is = Thread.currentThread().getClass().getResourceAsStream("/setting.properties");
第二种是WEB应用的环境中,因为应用包含在了Servlet 容器中,所以情况相对来说要复杂一些。
同上一样,读取classpath中的资源,依然通过类加载读取,但是通过上下文的类加载器中去读。
例如,
Java代码 收藏代码
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("/setting.properties");
读取WebContent目录中的情况又不一样了,不能通过类加载器读取,需要通过ServletContext去读。
例如,
Java代码 收藏代码
InputStream is = request.getServletContext().getResourceAsStream("/WEB-INF/setting.properties");

⑤ java如何获取classpath中某文件的输出流

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URL;
import java.text.ParseException;

public class Test {
public String hello(String name) {
return "hello" + name;
}
public static void main(String args[]) throws ParseException, IOException{
URL file = Test.class.getClassLoader().getResource("");
System.out.println(file.getFile()+"a.txt");
try {
System.out.println(file.getFile()+"a.txt");
FileOutputStream fo = new FileOutputStream(file.getFile()+"a.txt");
System.out.println(file.getFile()+"a.txt");
String a = "aaaa";
fo.write(a.getBytes());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
我随便写了个,大致思想是 获得了路径后,当然能获得具体的输出流了

⑥ 如何用Spring读取JAR中的文件

通过Spring工具类获取classpath下的文件资源
1、资源文件不在jar中

Java代码
File cfgFile = ResourceUtils.getFile("classpath:test.txt");
或者
org.springframework.core.io.Resource fileRource = new ClassPathResource("test.txt");

获取文件:fileRource.getFile();
获取文件流:fileRource.getInputStream();
2、资源文件在jar中

Java代码
org.springframework.core.io.Resource fileRource = new ClassPathResource("test.txt");

⑦ java读取文件路径问题

如果你使用的是eclipse,请检查编译是否禁止了非.class文件的编译输出,如果这项没有问题。那么 src/META-INF/*.* 文件自动输出到 /WEB-INF/classes/META-INF/*.*。也就是说,最终资源文件在 WEB-INF/classes/META-INF/weibo.xml

使用JAVA 类获取路径:

Filef=newFile(getClass().getResource("/META-INF/weibo.xml").getPath());

获取InputStream:

InputStreaminput=getClass().getResourceAsStream("/META-INF/weibo.xml");

另外,JAVA项目的标准协定(习惯)中的源代码目录结构是:

js">src
|--main
||--javaJAVA文件
||--resources资源文件
|--test
|--javaTESTJAVA文件
|--resourcesTEST资源文件

输出的目录结构是:

target
|--classesmain/java,main/resource输出目录
|--test-classestest/java,test/resources输出目录

⑧ matlab2018b安装无法读取文件classpath.txt如何解决,急急急!

估计刚安装好的matlab是不会出现这个问题的,出现问题肯定是在某一次用360或者电脑管家清理垃圾之后才会出现这个问题。

首先声明我的matlab版本是matlab R2014a,下载链接:(额,网盘限制,上传不了超过4G大小的文件。。。要的私信吧=_=)...

破解过程网上有一大堆就不阐述了。

有如下解决方案:

方案1:

从别人的电脑上拷贝D:Program FilesMATLABR2014a oolboxlocal(这是我的matlab安装路径)路径下的文件,应该是有35个文件,但是一般会缺少4个左右,将缺少的相应文件拷贝到自己的matlab相应文件夹下。重新打开matlab,bingo~~~

方案2:

安装完毕之后,用自己的杀毒软件扫描垃圾,我的是电脑管家,找到如下界面:

那么在以后的清理垃圾时候就不会再清理这4个文件了。

吐槽就是不知道为什么会把这几个文件当成垃圾呢,还是QQ输入法下面的垃圾。。。。

⑨ 如何获取classpath下的log4j.properties文件的绝对路径

java获得当前文件路径

第一种:
File f = new File(this.getClass().getResource("/").getPath());
System.out.println(f);
结果:
C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin
获取当前类的所在工程路径;
如果不加“/”
File f = new File(this.getClass().getResource("").getPath());
System.out.println(f);
结果:
C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin\com\test
获取当前类的绝对路径;

第二种:
File directory = new File("");//参数为空
String courseFile = directory.getCanonicalPath() ;
System.out.println(courseFile);
结果:
C:\Documents and Settings\Administrator\workspace\projectName
获取当前类的所在工程路径;

第三种:
URL xmlpath = this.getClass().getClassLoader().getResource("selected.txt");
System.out.println(xmlpath);
结果:
file:/C:/Documents%20and%20Settings/Administrator/workspace/projectName/bin/selected.txt
获取当前工程src目录下selected.txt文件的路径

第四种:
System.out.println(System.getProperty("user.dir"));

结果:
C:\Documents and Settings\Administrator\workspace\projectName
获取当前工程路径

第五种:
System.out.println( System.getProperty("java.class.path"));
结果:
C:\Documents and Settings\Administrator\workspace\projectName\bin
获取当前工程路径

⑩ maven项目只能读到绝对路径下的文件,读不到相对路径下的文件

新建一个maven工程后,main目录下会有java和resources两个文件夹,其中java文件夹下存放源代码,resources文件夹下存放一些配置文件等。

maven%E5%B7%A5%E7%A8%8B%E7%BB%93%E6%9E%84%E5%9B%BE.pngJava: maven下读取资源文件的问题, java路径

在弄清楚编译后,资源文件以及字节码存在哪里这个问题之前,有必要明白什么是classpath

classpath实际上就是编译后的 以 classes 文件夹为起点的路径,而在ItelliJ IDEA 中编译后的文件都会存入out/proction下。

所以,编译后,resources文件夹中的文件以及java目录下的文件都会存入同一个目录(out/proction)下,也就是说,编译后是不存在java和resources这两个目录的。

读取资源文件的若干中方法

package me.shenchao.main;

import java.io.*;

/** * Created by jerry on 16-4-20. */

public class Demo1 {

private static void readTxt(String filePath) {

BufferedReader reader = null;

try {

reader = new BufferedReader(new FileReader(filePath));

String line = null;

while ((line = reader.readLine()) != null) {

System.out.println(line);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if (reader != null) {

try {

reader.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

public static void main(String[] args) {

//获取classpath路径

System.out.println("classpath路径: "+Demo1.class.getClassLoader().getResource("").getPath());

//获取当前类的加载路径

System.out.println("当前类加载路径: "+Demo1.class.getResource("").getPath());

// 读取文件resources目录中文件的若干种方法

// 方法一:从classpath路径出发读取

readTxt(Demo1.class.getClassLoader().getResource("test/demo1.txt").getPath());

// 方法二:从类加载路径出发,相当于使用绝对路径

readTxt(Demo1.class.getResource("/test/demo1.txt").getPath());

// 方法三:从类加载路径出发,相当于使用相对路径

readTxt(Demo1.class.getResource("../../../test/demo1.txt").getPath());

}

}

其中demo1.txt文件中内容为:

hahahahahahahahahha

输出如下:

classpath路径: /home/jerry/IdeaProjects/Demo/out/proction/demo1/

当前类加载路径: /home/jerry/IdeaProjects/Demo/out/proction/demo1/me/shenchao/main/

hahahahahahahahahha

hahahahahahahahahha

hahahahahahahahahha

从上面可以发现getResource 与 class.getClassLoader().getResource两者的区别:

前者获取的是当前类加载的路径,如果用此方法读取文件则有两种方法,与相对路径绝对路径非常类似,具体参见代码

后者获取的是类加载器的路径,即会到classpath路径下。可以理解当前在 classp/ 目录下,要想访问哪个文件,直接填写路径即可,不用区分相对路径和绝对路径。显然,此方法比较容易写出。推荐。

.gif

相关

Related Posts

JAVA: 理解Java中的类初始化

在运行 Java 代码时,很多时候需要弄清楚程序执行的流程,而面向对象的 Java 程序并非像主要为面向过程而设计的 C 语言一样去顺序执行(简单按照代码的顺序),这使得对于类文件的加载以及执行流程的理解非常重要。本文简单介绍了 Java 类的初始化部分具体过程,包括成员变量、静态代码块、构造函数等的初始化时机及执行流程。 初始化时机 根据 javase 8 的文档说明[1],一个类(本文暂不考虑接口)T…

JAVA: 获取当前月份c.get(Calendar.MONTH)中月份少一个月

@Test public void testGetTitle(){ System.out.println(new LocalDate().minusDays(1).toString("MM/dd/yyyy")); // joda-time Calendar c1 = Calendar.getInstance(); int year…

JAVA: 读写文件的几种方法

如果您使用java8,可以也参考这篇文章:JAVA: Java8流逐行读取文件 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.text.SimpleDateFormat;…

阅读全文

与读取classpath下文件相关的资料

热点内容
js组合快捷键 浏览:174
linux系统盘默认挂在的文件夹 浏览:667
淘宝数据包如何操作上架 浏览:567
vb编程中输入cls是什么意思 浏览:81
linuxtime服务 浏览:184
疯狂安卓讲义第二版代码 浏览:420
老炮儿三小时版本下载 浏览:313
matlab怎么调试程序 浏览:2
winxp升级win7的危害 浏览:496
网络没连上却不可用是怎么回事 浏览:752
社区版本 浏览:738
怎么查微信公众号什么时候开通的 浏览:717
安装三菱编程闪退怎么回事 浏览:488
手机怎么创建word文件格式 浏览:694
c语言连接数据库 浏览:887
数据线粉色和白色哪个是正 浏览:775
vb编程应注意什么 浏览:855
js循环添加控件 浏览:615
学习计算机网络的作用 浏览:235
access数据库最新内容怎么调 浏览:203

友情链接