分享

linux下java File.exists() 正常情况下返回值是false 是什么原因?

 wwq图书世界 2019-09-17
 本帖最后由 suxuanhua 于 2017-11-22 02:06 编辑




今天打算更新个人的JavaWeb小项目,项目在 win10 tomcat 中部署能正常运行。
但是打包成 上传到 腾讯云 UbuntuServer 16.04,解压,把项目根目录中的所有文件,放到 tomcat ROOT目录中,将 ROOT目录中原有的文件删除。
(说一下放ROOT的原因吧:刚用IDEA的时候没设置好,导致链接跳转都不包含项目名,懒得修改,就直接替换ROOT目录)
运行tomcat 之后,项目发生错误(如图),经过几个钟的排查之后,
发现 Java 的 exists() 在 linux 下 ,就算通过文件路径找到了文件,并获取了文件名,返回值还是false。win 则是正常的的true。

网上查了之后,看到百科这么一篇文章:https://baike.baidu.com/item/file_exists/357436?fr=aladdin

文章说,file_exists 需要检测的父级文件夹权限,不是 777 会返回false 。
虽然文章中的是php ,应该和 Java 的exists() 相同。

想问一下这种情况Java 要怎么解决,是试过将整个项目、tomcat都chmod 777 了都还是不行。


贴代码://通过这种方式,在static 方法内获得项目的classes 目录,让后通过Properties 加载 .properties 配置文件。


            String path = new Object() {
                public String getPath() {
                    //加"/"表示当前项目根目录,不加表示当前运行类的目录
                    return this.getClass().getResource(PropertiesfilePath).getPath();

                }
            }.getPath().substring(1);


            //显示获得的地址。
            System.out.println ("Stitic method new Object 获得的地址:"+path);//正常获取

            file = new File (path+"BOLOMI.properties");
            System.out.println ("文件名是:"+file.getName ());//正常获取

            //返回值是false
            boolean b = file.exists ();////////////////////////有BUG,linux判断错误,该方法返回值有问题。可能原因:如果文件夹权限不是777返回的都是false

            System.out.println("exists 返回值是:"+b);

            if (b){  //判断不通过


大神!!!!!快就火呀。。。。。。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多