当前位置: 首页 > 知识库问答 >
问题:

使用JCIFS性能问题将文件从本地驱动器复制到共享驱动器

宋安晏
2023-03-14

我使用以下JCIFS代码将文件从本地磁盘复制到共享驱动器

public boolean copyFiles(String srcFilePath, String destinationFileName) throws Exception {
    boolean successful = false;
    SmbFileOutputStream sfos = null;

    try {
        String user = USER_NAME + ":" + PASSWORD;
        System.out.println("User: " + user);

        NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("mydomain",USER_NAME,PASSWORD);
        Config.setProperty("resolveOrder", "DNS");

        String destinationFilePath = NETWORK_FOLDER +"/" +destinationFileName;

        SmbFile sFile = new SmbFile(destinationFilePath, auth);
        sfos = new SmbFileOutputStream(sFile);
    // sfos.write(getBytesFromFile(new File(srcFilePath))); -- 1st approach
       // Files.copy(new File(srcFilePath).toPath(),sfos); -- 2nd approach
        FileInputStream fis = new FileInputStream(srcFilePath);

        BufferedReader brl = new BufferedReader(new InputStreamReader(fis));
        String b = null;
        while ((b = brl.readLine()) != null) {
            sfos.write(b.getBytes());
        }
        sfos.flush();

        successful = true;
        System.out.println("Successful" + successful);
    } catch (Exception e) {
        successful = false;
        e.printStackTrace();
    } finally {
        if (sfos != null) {
            sfos.close();
        }
    }
    return successful;
}

复制10 mb文件需要10分钟以上。而当我直接复制同一个文件时,大约需要1分钟。我尝试了3种方法来复制文件(请参阅代码的注释部分),但没有一种方法显示出任何显著的差异。

是否有任何方法可以提高JCIFS的性能

共有1个答案

别子实
2023-03-14

作为一种解决方法,我安装了共享驱动器并将文件复制到该驱动器中。

 类似资料:
  • 有人能帮我把文件从共享文件夹复制到本地驱动器吗?我的代码是: 文件未被复制。我收到一条消息“无法连接到服务器”,但程序显示dir。源文件的getDate()(以及文件名和长度)。因此,我认为目标文件夹(C:/SQLRESTORESTAGE/)存在问题。此外,我也提供了只用于读取源文件。你能帮我纠正一下密码或者给点建议吗?非常感谢。

  • 我想我可以使用smbfile.copyto(),但我不知道如何访问本地文件。如果我写了以下内容,我会得到一个连接错误: 这个问题与如何在Java中使用jcifs将文件从smb共享复制到本地驱动器有关?

  • 我想将本地目录(包括子目录)的所有内容复制到samba共享。 有没有一个简单的方法可以做到这一点?类似于SMB文件的内容。当源和目标位于SMB上时,copyTo()。

  • 返回正确的标识符。当我使用服务帐户复制文件时,我可以全天在团队驱动器中复制。当我将它复制到用户的驱动器时,我得到的是“File not found:$UserRootid”。 我假设这是由于服务帐户无法访问用户的“我的驱动器”。我怎样才能让这个手术奏效?有人尝试过吗?

  • 我正在尝试Google Drive API V3。 拥有一些共享驱动器文件夹的访问权限,并且是所有这些资源的管理员,我想获取一个通过查询筛选的特定文件夹。 出于任何原因,当我尝试按照留档建议插入查询时,它会响应一个错误,这个错误不是很描述性,也不利于调试: 此外,如果我不带条件地执行查询,则响应会成功,并显示整个共享驱动器: 有什么帮助吗? 谢谢

  • 当我运行下面的代码时,它取自:https://developers.google.com/drive/api/v3/manage-shareddrives#python 我得到“用户对此文件没有足够的权限”如果我创建文件、列出共享驱动器或其他任何东西,都不会发生这种情况。除了['https://www.googleapis.com/auth/drive']. 需要注意的是,我使用的是服务号。服务帐