从Android应用程序访问Windows共享网络文件

时间:2013-01-09 13:55:34

标签: java android file-access jcifs

我正在尝试从我的应用访问共享文件,例如//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实例?

2 个答案:

答案 0 :(得分:0)

我认为你不能将其作为java.io.File阅读,因为它不是一个。

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

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

答案 1 :(得分:0)

试试这段代码。我不确定.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卡上有一个文件