Существует много, много представлений типа «проводник». Например (из поверхностного поиска Google): https://www.jstree.com/ или https://www.uptickhq.com/react-keyed-file-browser/ [113 ] для React.js. Вам придется обрабатывать «несколько учетных записей, которые взаимодействуют друг с другом» отдельно для реализации древовидного представления.
Это, вероятно, будет в форме серверного API, который сделал это и передал данные вашему клиенту, где ваше дерево использовало информацию из API для рисования дерева, или вы, вероятно, могли бы использовать такую библиотеку, как browser-request
/ jquery-ajax
/ и т.д.. извлекать данные из разных учетных записей непосредственно в браузер (учитывая, что для этого, вероятно, существуют некоторые ограничения CORS).
Символьные ссылки в Windows создаются с помощью API-функции CreateSymbolicLink, которая берет параметры, очень похожие на параметры командной строки, принятые утилитой командной строки Mklink.
Принятие Вас правильно ссылается на JNI и Win32 заголовки SDK, Ваш код мог таким образом быть столь же простым как:
JNIEXPORT jboolean JNICALL Java_ClassName_MethodName
(JNIEnv *env, jstring symLinkName, jstring targetName)
{
const char *nativeSymLinkName = env->GetStringUTFChars(symLinkName, 0);
const char *nativeTargetName = env->GetStringUTFChars(targetName, 0);
jboolean success = (CreateSymbolicLink(nativeSymLinkName, nativeTargetName, 0) != 0);
env->ReleaseStringUTFChars(symLinkName, nativeSymLinkName);
env->ReleaseStringUTFChars(targetName, nativeTargetName);
return success;
}
Обратите внимание, что это просто первое, что пришло на ум, и я не имел дело с JNI в возрастах, таким образом, я, возможно, пропустил некоторые тонкости создания этой работы...
Это было в моем списке для попытки из моих примечаний:
API:
http://msdn.microsoft.com/en-us/library/aa363866 (По сравнению с 85) .aspx
BOOLEAN WINAPI CreateSymbolicLink(
__in LPTSTR lpSymlinkFileName,
__in LPTSTR lpTargetFileName,
__in DWORD dwFlags
);
Некоторые примеры C#:
Пример C++, это - cnp от другой статьи, которую я читал. Я не протестировал его, так используйте его с осторожностью.
typedef BOOL (WINAPI* CreateSymbolicLinkProc) (LPCSTR, LPCSTR, DWORD);
void main(int argc, char *argv[])
{
HMODULE h;
CreateSymbolicLinkProc CreateSymbolicLink_func;
LPCSTR link = argv[1];
LPCSTR target = argv[2];
DWORD flags = 0;
h = LoadLibrary("kernel32");
CreateSymbolicLink_func =
(CreateSymbolicLinkProc)GetProcAddress(h,
if (CreateSymbolicLink_func == NULL)
{
fprintf(stderr, "CreateSymbolicLinkA not available\n");
} else
{
if ((*CreateSymbolicLink_func)(link, target, flags) == 0)
{
fprintf(stderr, "CreateSymbolicLink failed: %d\n",
GetLastError());
} else
{
printf("Symbolic link created.");
}
}
}
Сказав это, я не использовал бы этот код :-) Я или был бы склонен разветвить mklink или посмотреть на собственную библиотеку от jruby/jpython (Извините, я не могу посмотреть он банкомат, поскольку мое сетевое соединение является хлопьевидным). Я, кажется, вспоминаю, что jruby записал библиотеку, которая оборачивает различную posix пчелу в Java (думает как показанный, это требуется для рубинового соответствия, но не кросс-платформенное). Этой библиотекой пользуются jpython люди, которые кажутся очень довольными ею. Я был бы удивлен, не предлагает ли эта библиотека поддержки символьной ссылки.
Вы не могли только обратиться к командной строке и использовать mklink?