我需要将本地地址更改为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);
}
是否有某种方法可以获取我的共享文件夹的详细信息,而不是默认文件夹?
答案 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\dao
为dao
然后它也可以作为\\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")
。
所以伪代码是:
\\
)\\ashish
)\\ashish\
)\\ashish\common
)\\ashish\common\dao\filename.xls
)