• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Как пользователю указать путь для экспорта?

  • Автор темы wowa
  • Дата начала
W

wowa

Call notesEmbeddedObject.ExtractFile( path$ )

Не хочу хардкодить путь. Нужно чтобы пользователь сам выбирал. Как это сделать?
Спасибо!
 
W

wowa

OKEN , спасибо.
А я до этого пялился на этот notesUIWorkspace долго, но так и не нашел нужного )))
 
W

wowa

OKEN , можно задать парочку вопросов?

1) можно ли как-н по умолчанию получить папку "Мои документы" ? Я посмотрел путь, он очень сложный: C:\Documents and Settings\USER_NAME\My Documents
А если несколько пользователей работает за компом, что делать?

2) notesUIWorkspace.SaveFileDialog
Пользователь выбирает путь, например "C:/Template/"
Мне нужно кодом создать вложенную дополнительную папку , чтобы путь получился "C:/Template/20101227/"
Когда я делаю сохранение файла, получается ошибка "Notes error: File cannot be created"

Это из-за того, что вложенная папка не создана,. Как это можно избежать?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 947
609
BIT
244
Это из-за того, что вложенная папка не создана,. Как это можно избежать?
в java есть класс File, кот. создаёт путь и вложенные диры сразу (без гимора с MkDir)
Код:
			File baseDir = new File("c:\\examples\\embedding");
File outDir = new File(baseDir, "out");
outDir.mkdirs();
юзеровый путь получить - как два палцаабасфальт - %UserProfile%
прямыть у путе для файло казать %UserProfile%\My Documents\моёВиндовоеФайло.txt
в темпы пихается соответ. %TEMP%\моёВиндовоеФайло.txt
ежели темпы не переопределяли в системе - буить в юзеровых темпах
 
W

wowa

lmike, уууу , с джавой у меня хреново,
могу ли я как-н это прикрутить к моему LS агенту? ну там вызвать функцию из джава библиотеки? и т.д.?


Добавлено: а также вопросик, как быстро проверить есть ли уже по указанному пути данный файлик?
 
T

turumbay

как быстро проверить есть ли уже по указанному пути данный файлик?
Java way:
Код:
Uselsx "*javacon"
Function fileExists(fileName As String ) As Boolean
Dim jSession As JavaSession
Dim FileClass As JavaClass
Dim file As JavaObject

Set jSession = New JavaSession()
Set FileClass = jSession.GetClass("java/io/File")
Set file = FileClass.CreateObject("(Ljava/lang/String;)V", fileName)
fileExists = file.exists()
End Function
 
N

nvyush

а также вопросик, как быстро проверить есть ли уже по указанному пути данный файлик?
link removed

Добавлено
могу ли я как-н это прикрутить к моему LS агенту? ну там вызвать функцию из джава библиотеки? и т.д.?
См. в справке дизайнера LS2J. turumbay уже и пример привёл.
 
W

wowa

Вроде разобрался, но все равно не получается правильно составить вот этот кусок:

Код:
File baseDir = new File(%UserProfile%//My Documents");
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 947
609
BIT
244
%UserProfile% эта часть для виндового энвиронмента, слэши д.б. обратные (двойные)
и я не уверен - будет ли трансляция в системные вызовы (а без них не будет создаваться файл) - надо пробывать
в джава есть наборчик системных переменных
 
W

wowa

lmike , спасибо, вроде помогло

я сделал так:

Код:
return System.getProperty("user.home");

Оно возвращает:

C:\Documents and Settings\USER_NAME

Ну и дальше я дописываю Мои документы. Поправьте меня если тут что-то может быт ьне так
 
N

nvyush

Надо ли что-то подключать?
Uselsx "*javacon"

Вроде разобрался, но все равно не получается правильно составить вот этот кусок:
Как-то так:
Код:
Sub Initialize
Dim jSession As JavaSession
Dim FileClass As JavaClass
Dim userDir As JavaObject
Set jSession = New JavaSession()
Set FileClass = jSession.GetClass("java/io/File")
Set userDir = FileClass.CreateObject("(Ljava/lang/String;)V", "C:\\Docs\\tmp333")
Call userDir.mkdirs()
End Sub
 
N

nvyush

Попробуйте штатную временную папку явы. У меня выдаёт что-то вроде "C:\DOCUME~1\USERNAM~1\LOCALS~1\Temp\". Только слэши, возможно, придётся удвоить.

Код:
	Dim jSession As JavaSession
Dim sysClass As JavaClass
Dim jMeth As JavaMethod
Dim tmpDir As String
Set jSession = New JavaSession()
Set sysClass = jSession.GetClass("java/lang/System")
Set jMeth = sysClass.GetMethod("getProperty", "(Ljava/lang/String;)Ljava/lang/String;")
tmpDir = jMeth.Invoke(, "java.io.tmpdir")
Msgbox tmpDir
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!