我知道我可以从src/test/resources加载一个文件:
getClass().getResource("somefile").getFile()
Run Code Online (Sandbox Code Playgroud)
但是我如何获得src/test/resources 目录的完整路径,即我不想加载文件,我只是想知道目录的路径?
我有以下目录布局:
- SRC
- 主要
- java的
- 资源
- sql(数据库脚本)
- 弹簧(配置)
- Web应用程序
在ServletContextListener类中,我想访问SQL目录下的文件并列出它们.基本上我的问题是路径,因为我知道简单地列出目录下的文件是:
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
Run Code Online (Sandbox Code Playgroud)
也许我可以使用ServletContextEventObject来尝试构建路径resources/sql
public void contextInitialized(ServletContextEvent event) {
event.getServletContext(); //(getRealPath etc.)
}
Run Code Online (Sandbox Code Playgroud)
是否存在以相对的非硬编码方式设置该路径的东西?像new File("classpath:sql")(最好是弹簧,如果可能的话)或者我应该用servletContext指向resources/sql什么?
我有这个非常具体的需求,其中从类路径加载文件,并且在需要它的绝对路径的另一个模块中使用相同的文件.有什么方法可以推导出通过类路径加载的文件的绝对路径?
我在Java 6上,我有一个方法可以扫描运行时类路径中的文件config.xml.如果找到,我想将文件的内容读成字符串:
InputStream istream = this.getClass().getClassLoader().getResourceAsStream("config.xml");
if(istream != null) {
System.out.println("Found config.xml!");
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader;
try {
reader = new BufferedReader(new FileReader(fileName));
char[] buf = new char[1024];
int numRead = 0;
while((numRead=reader.read(buf)) != -1) {
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
buf = new char[1024];
reader.close();
}
} catch (FileNotFoundException fnfExc) {
throw new RuntimeException("FileNotFoundException: " + fnfExc.getMessage());
} catch (IOException ioExc) {
throw new RuntimeException("IOException: " + ioExc.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我得到以下控制台输出:
Found …Run Code Online (Sandbox Code Playgroud) 我有以下目录结构的Maven的模块,我想要得到的路径abc.access中abcManager.java.
src
|-main
|-java
|-org.abc.xyz
|-init
|-abcManager.java
|-resources
|-abc.access
Run Code Online (Sandbox Code Playgroud)
我尝试使用abcManager.class.getResource("abc.access")它,但它给出了一个空值。
我经历了以下问题,但解决方案不起作用。
btnimport.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent fileintent = new Intent(Intent.ACTION_GET_CONTENT);
fileintent.setType("*/*");
try {
startActivityForResult(fileintent, requestcode);
} catch (ActivityNotFoundException e) {
}
}
});`
Run Code Online (Sandbox Code Playgroud)
我正在尝试在我的Android应用程序中导入sky.csv文件.
但是,当我选择文件时,我会得到:
IO例外:打开失败:ENOENT(没有这样的文件或目录)
我将检查路径:
日志>内容://com.android.externalstorage.documents/document/38F0-D5E4%3ADCIM%2Fsky.csv我正在使用这种方法获取路径
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (data == null)
return;
switch (requestCode) {
case requestcode:
Uri filepath1 = data.getData();
String filepath = filepath1.toString();
Run Code Online (Sandbox Code Playgroud)
请帮我解决一下这个.我尝试了很多方法.但是,我没有得到任何适当的解决方案.
我需要从 eclipse 的属性文件中读取配置详细信息。我已将其放在与 我调用的类文件config.properties相同的级别plugin.xml中:
Properties properties = new Properties();
FileInputStream file;
String path = "./config.properties";
file = new FileInputStream(path);
properties.load(file);
Run Code Online (Sandbox Code Playgroud)
我得到一个file not found exception. 有没有更好的方法来做到这一点?
这个主题有很多混乱.有人问过几个问题.事情似乎还不清楚.ClassLoader,绝对文件路径等
假设我有一个项目目录结构,
MyProject--
--dist
--lib
--src
--test
我在"lib/txt"目录中有一个资源说"txtfile.txt".我想以独立于系统的方式访问它.我需要项目的绝对路径.所以我可以将路径编码为abspath +"/ lib/Dictionary/txtfile.txt"
假设我这样做
java.io.File file = new java.io.File(""); //Dummy file
String abspath=file.getAbsolutePath();
Run Code Online (Sandbox Code Playgroud)
我得到当前的工作目录,不一定是项目根目录.
假设我从'dist'文件夹执行最后的'prj.jar',该文件夹还包含"lib/txt/txtfile.txt"目录结构和资源,它也应该在这里工作.我应该是dist文件夹的绝对路径.
希望问题很清楚.
我正在尝试获取位于 java jar 之外的文件的路径,但我不想使用绝对路径。一个例子:假设 jar 位于 ~/lib/myjar.jar 并且该文件位于同一文件夹中。我尝试的是这样的,但失败了:
File myfile = new File(this.getClass().getResource("../../../").toURI());
Run Code Online (Sandbox Code Playgroud)
注意:我的包是 com.contro.gui,这就是为什么我有“../../../”,以便访问“root”
我不确定如何访问该文件。有什么建议吗??如果我要访问的文件位于 ~/res/ 这样的其他文件夹中怎么办?