【问题标题】:Java IO File not crreated without throwing exceptionJava IO 文件未在不引发异常的情况下创建
【发布时间】:2015-01-27 10:47:45
【问题描述】:

我在 java 中的文件创建有问题。 我发现了这个问题 Java IO: file is not generated

但这并没有提供答案。

我的 tomcat webapp 可以在远程文件夹(\myserver\myfolder)上创建文件 xml 何时在我的开发环境中运行。当我在测试和 rpod 环境中发布它时,我的应用程序根本不会创建任何东西,并且这两台机器位于我的本地环境所在的同一网络中,并且它们也具有相同的授权。它也不会抛出任何异常!!!

这是我的代码:

try{            
        Util.useNet(true, "\\\\myserver\\myfolder\\");
        fos = new FileOutputStream("\\\\myserver\\myfolder\\")+ fileName);
        fos.write("<?xml version=\"1.0\"?>".getBytes("UTF-8"));
        byte[] bytes = xml.getBytes("UTF-8");
        fos.write(bytes);
        fos.flush();
    }catch (Exception e){
        Log.setErrorLog("errore", e);
    }
    finally{
            try{
                fos.close();
            }catch (Exception e) {

            }
    }

方法“useNet”也调用命令“net use”(只是为了确定)。

【问题讨论】:

  • 该代码甚至无法编译 - "\\myserver\myfolder\" 不是有效的字符串文字。
  • 我在这里写错了!事实上它是在我的程序中这样写的:“\\\\myserver\\myfile\\”。如果您想知道,在我的程序中,我从配置文件中获取它!如果您有建设性的内容,请分享
  • 检查文件夹权限??
  • 您可能想尝试使用 FileSystem.getSeparator() 而不是实际键入“\\”。如果它适用于您的开发系统而不适用于您的其他环境,我猜这是因为不同的平台具有不同的分隔符。
  • Util.useNet 是什么?演示问题的简短而完整的程序会有所帮助。

标签: java xml file io net-use


【解决方案1】:

谢谢大家的回答,我发现他们很有帮助! :)

我发现了问题:就在我们将方法称为“网络使用”的那一刻。

首先,“net use”不接受末尾带有斜杠的路径。 示例:

 cmd net use /c \\\\myserver\\myfolder\\ mypassword /user:mydomain\\myuser

如果正确写入,此命令通常会引发异常,但在我的情况下,它不是因为这个原因:

/user:mydomain\\myuser

当我从我的 file.properties 中获取属性“mydomain\myuser”时,我注意到它的值是:“mydomain\myuser”。

java 不喜欢单斜杠,所以结果是一个“net use”命令,如下所示:

cmd net use /c net use \\\\myserver\\myfolder\\ mypassword /user:mydomain@myuser

这是非抛出异常问题的原因。修复了这个问题,它会抛出“filenotfoundexception:访问被拒绝”,但这是另一回事。

所以,最后,这里的“net use”命令是正确的:

 cmd net use /c \\\\myserver\\myfolder mypassword /user:mydomain\\myuser

一个愚蠢的分心错误我感到羞耻,对不起大家!

再次感谢大家的帮助

【讨论】:

    猜你喜欢
    • 2013-03-11
    • 1970-01-01
    • 2011-05-18
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 2016-02-25
    • 1970-01-01
    相关资源
    最近更新 更多