用例:用Java读取文件内容(部署在cloud-hub)。
问题: 我编写了一个java类,它读取文件并将内容记录到控制台。但是如果将相同的代码移动到云中心,则会引发文件未找到异常。
问题:我知道 src/main/resources 文件夹结构将不可用,创建 File 实例时应该使用的文件位置是什么,如果代码通过cloudhub运行
这里的代码片段仅适用于本地环境。
package com.testUtil;
import org.mule.api.MuleEventContext;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import org.mule.api.lifecycle.Callable;
public class TestClass implements Callable {
@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
System.out.println("Files and directories present at src/main/resources are :");
File folder = new File("./src/main/resources/");
File[] listOfFiles5 = folder.listFiles();
for (int i = 0; i < listOfFiles5.length; i++) {
if (listOfFiles5[i].isFile()) {
System.out.println("File " + listOfFiles5[i].getName());
} else if (listOfFiles5[i].isDirectory()) {
System.out.println("Directory " + listOfFiles5[i].getName());
}
}
System.out.println("expected output is: xsd");
FileReader fr = new FileReader(folder+"/xsd/Request.xsd");
BufferedReader br = new BufferedReader(fr);
String contents="";
String s="";
while((s = br.readLine()) != null) {
contents+=s;
}
System.out.println(contents);
fr.close();
return contents;
}
}
但是
this.getClass().getResource("./").getPath();
给出./mule-3.4.1-R35/conf作为输出。
所以尝试使用下面的 snnipet,但仍然是 FileNotFoundException
FileReader fr = new FileReader(this.getClass().getResource("./").getPath()+"/xsd/Request.xsd");
请帮忙!! 谢谢
最佳答案
src/main/resources
中的文件应使用类路径加载,而不是作为文件加载。
我建议使用Reflections用于有效地扫描类路径。
关于java - 代码移至 CloudHub 时无法找到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21047880/