当前位置: 首页 > 面试题库 >

从Java Web应用程序访问Linux本地文件系统

柯捷
2023-03-14
问题内容

我们在apache服务器中托管的Web应用程序中使用Java库。库中的ReadConfFile方法返回文件未找到错误。方法如下

public byte[] ReadConfFile()
{
    try
    {
        File file = new File("/home/product/api/conf.txt");
        if(!file.exists())
            return "file not found".getBytes();
        byte[] buf = new byte[(int) file.length()];

        FileInputStream fis = new FileInputStream(file);
        fis.read(buf);
        return buf;
    } catch (IOException e)
    {
        e.printStackTrace();
        return null;
    }
}

是否允许从Web应用程序访问本地文件系统?如果是,那么是否需要设置任何访问权限?


问题答案:

要快速回答您的问题:您可以从Web应用程序访问文件系统,但是必须检查应用程序服务器/ Web容器上如何配置SecurityManager(如果已安装)。

但是,您读取文件的方法存在严重的问题,应该解决:

  1. 不要检查if(!file.exists())更好的检查if(!file.isFile())。如果文件是目录,则第一次检查也返回true。

  2. 如果没有文件,最好不要返回字符串,抛出异常或加载一些默认配置或执行其他有用的操作。

  3. 您读取文件的逻辑非常糟糕。如果读取函数返回不同数量的可用字节(也许读取是分块的),则会得到损坏的结果。

  4. 您不要在finally块中关闭流(或者,如果您使用的是Java 7,请尝试使用资源)。

  5. 异常处理也不是很好。打印stacktrace不好,记录它会更好。最好处理异常(引发异常,或切换到某些默认配置,例如当文件不存在时)。

编辑:如果要访问客户端的文件系统,则无法从直接在服务器上运行的Web应用程序完成此操作。当然,这必须从客户端上运行的代码完成,并且您必须填写有关客户端上运行的内容的更多详细信息,因为“标准”
Web应用程序在客户端上将具有Javascript和(X)HTML ,而不是Java。



 类似资料:
  • 问题内容: 我对JQuery和Ajax有点陌生,所以如果这是新手的问题,我深表歉意。 我正在尝试使用本地文件中的ajax来访问Web(例如,获取文本文件)。 我没有使用IIS或任何其他来自硬盘驱动器的简单文件(我需要它保持这种状态)。 在IE8和Chrome(版本11.0.696.60)上都进行了检查。 这是一些JavaScript来说明: 此代码试图从Web加载文本文件-IE和chrome上的操

  • 我需要一些关于本地枢轴云铸造VM中本地部署的应用程序的帮助。 最近,我在视窗服务器2012虚拟机中安装了关键的云铸造,并在本地部署了Spring音乐应用程序。现在我想与他人共享此网址,但当我将APP PUSH命令中生成的网址提供给其他人时,他们无法看到该应用程序。您能帮助如何将APP网址共享给其他人,以便他们可以查看该应用程序吗? http://spring-music.local.pcfdev.

  • 我可以在AppEngine应用程序中使用GAE托管的MongoDB吗? 如果是,如何用appengine实例调试此连接问题? 提前谢了。

  • 我目前正在为一个即将到来的项目评估电子。也许我的问题对于使用电子的人来说是微不足道的。然而,我在留档中找不到答案,或者可能没有完全掌握这个概念。 我想有一个网络应用,用户可以通过浏览器访问,如果他们选择或从本机应用,如果他们想使用USB设备(在本例中,是信用卡阅读器)连接到他们的电脑。因此,主。js文件会像这样打开远程web应用程序 能够访问本地资源有什么区别吗(文件、端口等,如果页面是远程的还是

  • 问题内容: 对于基于Windows / Linux的浏览器,我可以使用Java插件来访问文件系统。由于IOS不支持Java,是否有其他替代方法可以完成它? 问题答案: 不,你不能。无法在iOS野生动物园中上传或下载文件。在iCab中,您可以通过上传,但不能访问文件系统。从浏览器访问整个文件系统将带来安全隐患。而且Java插件无法访问整个文件系统。

  • 问题内容: 我是angularjs的新手,我整天都在网上进行搜索,目的是找到一种解决方案,可以从本地json文件获取数据,而不必在我的webapp中使用本地主机。不幸的是,我还没有找到任何东西。我尝试使用$http.get,但收到Cross Origin *错误。 有没有其他方法可以从本地json文件中获取数据而不必在本地托管我的webapp? angularjs是否有其他功能可以从本地json文