将本地地址更改为UNC格式,地址从共享文件夹开始

时间:2011-11-04 07:17:51

标签: java swing java-ee

我需要将本地地址更改为UNC格式,地址存储格式如下:

计算机名称或服务器名称/共享文件夹名称和关联的路径/文件名

例如如果本地计算机上的地址

D:\Workspace\Task Management System\TBMS\src\com\common\dao\fileName.xls

common共享文件夹,则必填地址应为

ashish:\common\dao\filename.xls

其中ashish是我的计算机名称

Java是否提供了一些可以实现这种转换的API或类,还是有一些方法可以实现它?


通过网络共享,我获得了所有共享文件夹的名称。我不能只获得共享名称文件夹吗?

我的代码是:

String line = null;
String[] commands = new String[] { "cmd", "/C", "net share" };

Process child = Runtime.getRuntime().exec(commands);
InputStream ins = child.getInputStream();
BufferedReader buffReader = new BufferedReader(new InputStreamReader(ins));

while (!(line = buffReader.readLine()).trim().equals("The command completed successfully."))    
{
    System.out.println(line);
}

是否有某种方法可以获取我的共享文件夹的详细信息,而不是默认文件夹?

1 个答案:

答案 0 :(得分:1)

请注意,单个文件可能有多个UNC路径。例如,

D:\Workspace\Task Management System\TBMS\src\com\common\dao\fileName.xls可以\\ashish\common\dao\filename.xls

的形式访问

因为

D:\Workspace\Task Management System\TBMS\src\com\common分享为common

在名为ashish的计算机上。如果有另一份分享

D:\Workspace\Task Management System\TBMS\src\com\common\daodao

然后它也可以作为\\ashish\dao\filename.xls

访问

我不知道你是否知道共享的根源是什么。如果不这样做,则必须从叶文件夹开始并遍历查找共享的第一个文件夹。

接下来,如何判断文件夹是否共享?我不会随意了解任何可以管理Java共享窗口的库,但可能还有一个库。即使没有,也应该很容易解析net share的输出,它在Windows XP上提供如下输出:

Share name   Resource                        Remark

-------------------------------------------------------------------------------
C$           C:\                             Default share                     
ADMIN$       C:\WINDOWS                      Remote Admin                      
IPC$                                         Remote IPC                        
tmp          c:\tmp       

您需要忽略C$等特殊分享。

最后,您需要识别计算机名称。您可以使用System.getenv("COMPUTERNAME")

所以伪代码是:

  1. 以\\(\\
  2. 开头
  3. 附加计算机名称(\\ashish
  4. 追加\(\\ashish\
  5. 附加文件最近父级的共享名称(\\ashish\common
  6. 附加完整文件名(\\ashish\common\dao\filename.xls
  7. 的其余部分