【问题标题】:Access Windows shared network files from Android app从 Android 应用程序访问 Windows 共享网络文件
【发布时间】:2012-12-23 14:16:15
【问题描述】:

我正在尝试从我的应用访问共享文件,例如 //172.24.9.13/c/2012xp.mdb

通过做:

new File("//172.24.9.13/c/2012xp.mdb");

它不起作用。

我找到了 jCIFS 库,并创建了

new SmbFile("//172.24.9.13/c/2012xp.mdb");

它有效,但问题是我需要java.io.File

我还看到,如果不root,就无法在android设备上挂载smb。

有没有办法获取我的共享文件的java.io.File 实例?

【问题讨论】:

  • 你想用它做什么?

标签: java android file-access jcifs


【解决方案1】:

试试这个代码。我不确定 .mdb 文件格式。但这适用于 PDF 文件。

首先使用您的 smb 文件创建一个 SmbFileInputStream。

in = new SmbFileInputStream(sFile);

然后在设备存储(SD卡)中创建一个输出文件

outputfile = new File(dir, "todevice.pdf");

然后创建一个 FileOutputStream (java IO)

out = new FileOutputStream(outputfile);

然后读取输入(SMB)并将其写入输出(IO)

while ((read = in.read(buffer)) > 0  ) 
{
    try {
           out.write(buffer, 0, read);
    } catch (IOException e) {
    }
}

现在你的 SD 卡上有一个文件

【讨论】:

    【解决方案2】:

    我认为您无法将其阅读为java.io.File,因为它不是一个。

    如果您绝对需要java.io.File,您可能必须调用smbFile.getInputStream() 并复制到本地文件,而不是使用该本地文件。

    考虑到它是一个.mdb 文件,您可能想要从数据库中读取数据,它可能是一个巨大的文件,您不想复制它。在这种情况下,您唯一的选择是设置一个服务器,使用一个以 JSON 格式回复的 api,您的应用将向它发送 GET 请求。

    【讨论】:

      猜你喜欢
      • 2014-01-08
      • 1970-01-01
      • 2010-09-06
      • 2012-06-27
      • 1970-01-01
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多