繁体   English   中英

如何使用刚刚映射到本地驱动器的网络文件夹?

[英]How to use a network folder that has just been mapped to a local drive?

按照该线程和其他线程中的线索 ,我建立了一个代码块,在其中将网络驱动器映射到本地驱动器,然后列出其中的一些文件。

问题是:看起来在第一次调用中FileUtils方法尚不可用该映射,并且仅当我等待并再次调用该例程时,它才能找到已准备好使用的映射驱动器。

String path = "B:/Files/Somwething/SomethingElse/FinalDepth";
File newFile = new File("B:/Files/Something/SomethingElse");
if (!newFile.isDirectory()) {
    flagNetwork = true;
    p = Runtime.getRuntime().exec("net use B: " + networkSharedFolder);

    if(p != null) {
        Collection<File> files = FileUtils.listFiles(new File(path), arrExt, false);
        Iterator<File> iterFiles = files.iterator();
        while(iterFiles.hasNext()) {
            File tmpFile = (File) iterFiles.next();
            listResult.add(tmpFile);
        }
        LogServicio.doLog("[MyApplication, ContextListener] Drive B mapped to " + networkSharedFolder + ".", LogServicio.CErrorLvl);
    } else {
        throw new Exception("Error mapping network drive.");
    }
}

¿为了立即使用映射的驱动器(或保证等到驱动器可用之前),我该怎么办?

Runtime.exec启动一个正在运行的进程,但实际上并没有等待它。 您必须等待该过程完成(通过类似p.waitFor() ),然后才能知道驱动器的映射。

...
if (p != null) {
    while (true) {
        try { p.waitFor(); break; }
        catch (InterruptedException ex) { /* don't care */ }
    }

    Collection<File> files ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM