除非路径

时间:2019-05-30 16:52:20

标签: java android smb

我正在尝试将测试文件(在我的Android应用中)写入Windows 2008服务器上的SMB共享。如果我尝试写入的路径包含一个子文件夹名称(例如“ smb://192.168.1.25/D/mysubfolder”,其中D是远程计算机D驱动器的共享名称),则该操作有效精细。但是,如果未指定子文件夹名称,则在尝试将文件写入共享时会收到UnknownHostException。 因此,对于以下两个路径,我都会收到UnknownHostException:

smb://192.168.1.25/D/

smb://192.168.1.25/myfoldershare(其中myfoldershare是D盘上子文件夹的共享名称)

以上所有共享名在主机上都配置了相同的权限(“所有人”的完全控制权限)。 为什么我总是得到UnknownHostException,除非我将子文件夹名称附加到路径上?

我尝试了SMB主机上各种权限选项,但现在对我要访问的所有共享都采用“完全控制”。 我尝试使用同一Android设备上的Solid Explorer应用程序写入相同的共享(使用相同的登录凭据)。写任何“问题”共享都没有问题。

String testPathRootDest = "smb://192.168.1.25/myfoldershare/";
try {
  SmbFile newFolder = new SmbFile(testPathRootDest, testAuth);
  if (!newFolder.canWrite()) {
    return "NotWritable";
           }
            // Finally, try writing a test file
            String testFilePath = testPathRootDest + "test.txt";
            SmbFile testFile = new SmbFile(testFilePath, testAuth);
            SmbFileOutputStream out = new SmbFileOutputStream(testFile);
            String text = "File Upload Test";
            out.write(text.getBytes());
            out.flush();
            out.close();
            // Delete test file
            testFile.delete();
        } catch (IOException e) {
            System.out.println(e.getMessage());
            errorMessage = e.toString();
            e.printStackTrace();
            if (errorMessage.contains("UnknownHostException")) {
                return "UnknownHostException";
            } else {
                return "IOException";
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
            errorMessage = e.toString();
            e.printStackTrace();
            return "IOException";
        }

我希望“ new SmbFile”命令能够正确完成,但是如果我无法将文件夹名称附加到路径中,它将返回UnknownHostException

0 个答案:

没有答案