java - IOException 在访问 Citrix 安装的驱动器时磁盘空间不足

标签 java windows citrix

我遇到了一个非常奇怪的问题。我正在尝试下载一些文件并存储。我的代码相对简单明了(见下文)并且在我的本地机器上运行良好。

但它旨在运行在通过 Citrix 和 VPN 访问的 Windows 终端服务器上。该文件将保存到已安装的网络驱动器中。此挂载是通过 Citrix VPN 挂载的本地 C:\驱动器,因此可能会有一些滞后。不幸的是,我没有关于整个基础设施究竟是如何设置的内部细节......

现在我的问题是,当尝试执行 write() 调用时,下面的代码抛出 IOException 告诉我磁盘上没有剩余空间。目录结构已正确创建并创建了一个零字节文件,但内容从未写入。

驱动器上有超过 1 GB 的可用空间,Citrix 客户端已获得“完全访问”权限,并且可以使用 Windows 资源管理器或记事本在该映射驱动器上复制/写入文件。只有 Java 在这里给我带来麻烦。

我还尝试先下载到一个临时文件,然后将其复制到目的地,但由于复制基本上与我的原始代码中的流操作相同,因此行为没有变化。它仍然因磁盘空间不足异常而失败。

我不知道还能尝试什么。你能给点建议吗?

public boolean downloadToFile(URL url, File file){                                                                  
    boolean ok = false;                                                                                             

    try {                                                                                                           
        file.getParentFile().mkdirs();                                                                              

        BufferedInputStream  bis = new BufferedInputStream(url.openStream());                                       
        byte[]            buffer = new byte[2048];                                                                  
        FileOutputStream     fos = new FileOutputStream(file);                                                      
        BufferedOutputStream bos = new BufferedOutputStream( fos , buffer.length );                                 
        int size;                                                                                                   
        while ((size = bis.read(buffer, 0, buffer.length)) != -1) {                                                 
            bos.write(buffer, 0, size);                                                                             
        }                                                                                                           
        bos.flush();                                                                                                
        bos.close();                                                                                                
        bis.close();                                                                                                

        ok = true;                                                                                                  
    }catch(Exception e){                                                                                            
        e.printStackTrace();                                                                                        
    }                                                                                                               

    return ok;                                                                                                      
}

最佳答案

试试 commons-io。特别是 Util 类 FileUtilsIOUtils

在更改我们的代码以使用 commons-io 之后,所有文件操作变得更加流畅。即使有映射的网络驱动器。

关于java - IOException 在访问 Citrix 安装的驱动器时磁盘空间不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6599359/

相关文章:

java - Java 和 JSF 2.0 是嵌入式使用的可行替代方案吗?

java - 是否可以像在 Java 端那样使用模数和指数生成 RSA 私钥?

java - 从 Citrix session 中运行的 Java 应用程序,如何知道客户端工作站是否空闲?

python - Xenserver API - 使用本地存储创建虚拟机?

java - Netbeans import java.util.Scanner 类型的非法开始

java - FileChannel 与 RandomAccessFile

windows - 使用 at 访问共享网络

windows - WaveOutWrite 直接来自网络摄像头音频捕获回调

python - 如何安装 pyCurl?

Citrix 客户端自动化