Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用刚刚映射到本地驱动器的网络文件夹?_Java_Smb_Shared Directory - Fatal编程技术网

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

Java 如何使用刚刚映射到本地驱动器的网络文件夹?,java,smb,shared-directory,Java,Smb,Shared Directory,根据中的线索和其他线索,我设置了一个代码块,将网络驱动器映射到本地驱动器,然后列出其中的一些文件 问题是:在第一次调用中,FileUtils方法的映射似乎还不可用,只有在我等待并再次调用例程时,它才会发现映射的驱动器已准备好使用 String path = "B:/Files/Somwething/SomethingElse/FinalDepth"; File newFile = new File("B:/Files/Something/SomethingElse"); if (!newFile

根据中的线索和其他线索,我设置了一个代码块,将网络驱动器映射到本地驱动器,然后列出其中的一些文件

问题是:在第一次调用中,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.");
    }
}
String path=“B:/Files/Somwething/SomethingElse/FinalDepth”;
File newFile=新文件(“B:/Files/Something/SomethingElse”);
如果(!newFile.isDirectory()){
flagNetwork=true;
p=Runtime.getRuntime().exec(“网络使用B:+networkSharedFolder”);
如果(p!=null){
Collection files=FileUtils.listFiles(新文件(路径),arext,false);
迭代器iterFiles=files.Iterator();
while(iterFiles.hasNext()){
文件tmpFile=(文件)iterFiles.next();
listResult.add(tmpFile);
}
LogServicio.doLog(“[MyApplication,ContextListener]驱动器B映射到“+networkSharedFolder+”,LogServicio.CErrorLvl);
}否则{
抛出新异常(“映射网络驱动器时出错”);
}
}

?为了立即使用映射的驱动器(或保证我一直等到驱动器可用),我应该怎么做?

运行时。exec
启动进程运行,但并不真正等待它。您必须等待进程完成(通过类似
p.waitFor()
)的方式),然后才能知道驱动器的映射

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

    Collection<File> files ...
。。。
如果(p!=null){
while(true){
试试{p.waitFor();break;}
catch(InterruptedException ex){/*不在乎*/}
}
收集文件。。。

运行时。exec启动正在运行的进程,但并不真正等待它。您必须等待进程完成(通过类似
p.waitFor()
的方式),然后才能知道驱动器的映射

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

    Collection<File> files ...
。。。
如果(p!=null){
while(true){
试试{p.waitFor();break;}
catch(InterruptedException ex){/*不在乎*/}
}
收集文件。。。

未将驱动器映射到
B:
导致第二个软盘驱动器出现问题?:-)未将驱动器映射到
B:
导致第二个软盘驱动器出现问题?:-)