代码移动到CloudHub时无法找到文件

时间:2014-01-10 15:17:16

标签: java mule cloudhub

用例:读取Java中的文件内容(在云中心部署)

问题: 我编写了一个java类,它读取文件和内容是日志到console.But如果相同的代码被移动到云Hub,则会引发File-not-Found异常。

问题:我了解src / main / resources文件夹结构将不可用,创建文件实例时应使用的文件位置应该是什么代码正在通过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");

请帮助!! 感谢

1 个答案:

答案 0 :(得分:1)

src/main/resources中的文件应该加载类路径,而不是文件。

我建议使用Reflections有效地扫描类路径。