Обратите внимание, что для одного файла может быть несколько путей 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
)