如何从 Java 读取 Windows 和 Linux 上的文件

2024-02-10

我有一个 xml 文件位于D:\XML\RequestXML我正在从该文件夹中读取 xml 文件FileReader。在我的程序中,我硬编码了文件路径/XML/RequestXML/。这适用于windows环境。在窗口中JBoss is in D:\jbossdistrib\jboss.

我在中创建了文件夹结构linux /usr/XML/RequestXML/。并将 xml 添加到 RequestXML 文件夹中。JBoss is in /usr/jbossdistrib/jboss/ path.

但是我的应用程序在linux环境中找不到/XML/RequestXML/中指定的文件。

如果我将文件路径更改为/usr/XML/RequestXML/它可以在Linux下运行。

如何在linux和windows下使用一致的文件路径?

public class Controller extends HttpServlet {

  private String filePath = "/XML/RequestXML/";

  protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {

       String file = request.getParameter("fileName");

       xml =  readFile(filePath + file);

    }

  private String readFile(String file) {
    StringBuffer fileData = new StringBuffer();
    try {

        BufferedReader reader = new BufferedReader(new FileReader(file));
        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 e) {
        logger.fatal("File not found in specifid path "+ file);
    }
    catch (IOException e) {
        logger.fatal("Error while reading the xml file");
    }
    return fileData.toString();
 }
}

Update

我的问题是如何设置文件路径而不/usr/在 Windows 中运行良好。 如果这是不可能的,那么我是否需要使用路径作为/usr/XML/RequestXML/windows环境下也可以吗?所以我必须创建一个像这样的文件夹结构D:\usr\XML\RequestXML在窗户中。


如果您知道当前工作目录(使用以下命令进行测试:

System.out.println(new File(".").getAbsolutePath());

您可以硬编码相对目录,例如 ../../XML/RequestXML

郑重声明:虽然这可能有帮助,但我仍然相信您应该尝试使用配置参数或将其作为类路径中可用的资源加载来解决此问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Java 读取 Windows 和 Linux 上的文件 的相关文章

随机推荐