-1

我在 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”(只是为了确定)。

4

1 回答 1

0

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

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

首先,“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

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

再次感谢大家的帮助

于 2015-01-28T10:43:53.867 回答