2011-11-04 143 views
-1

我需要改变我的本地地址为UNC格式存储在像格式的地址开始:更改本地地址与地址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

** ashish:\ common \ dao \ filename.xls **不是UNC格式,是吗? –

+0

它是lyk \\ ashish \ common \ dao \ filename.xls UNC我们有\\ server \ share \ file_path – user1029211

回答

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共享的Windows的库,但可能有一个库在那里。即使没有它应该很容易在Windows XP如下解析的net share输出,这使输出:

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. 追加计算机名称(\\ashish
  3. 追加\(\\ashish\
  4. 追加共享的最近的父的名字该文件(\\ashish\common
  5. 追加其余的完整文件名(\\ashish\common\dao\filename.xls