У меня есть программа, которая требует, чтобы внутренний файл (СЛОВАРЬ) будут скопированы на компьютер пользователя в папку, определенную следующим образом:Невозможно скопировать внутренний файл на компьютер пользователя
private static final String DIC_NAME = "WordHelp.dic";
private static final String DIC_FOLDER = System.getProperty("user.home");
private static final String PATH_SEP = System.getProperty("file.separator");
public static final String DICTIONARY = DIC_FOLDER + PATH_SEP + DIC_NAME;
Вот что работает на моем компьютер, где все вещи Java является:
public static void createDictionaryIfNecessary() throws IOException{
Path out_path = FileSystems.getDefault().getPath(DICTIONARY);
boolean dic_exists = Files.exists(out_path,
new LinkOption[]{LinkOption.NOFOLLOW_LINKS});
if(dic_exists)
return;
File file = new File("src/dictionary"); // here's problem for user ************
Path in_path = file.toPath();
try {
Files.copy(in_path, out_path,
REPLACE_EXISTING, COPY_ATTRIBUTES, NOFOLLOW_LINKS);
} catch (IOException e) { JOptionPane.showMessageDialog(null, e); }
}
Но пользователь получает эту ошибку:
java.nio.file.NoSuchFileException: src\dictionary
СОУ Файл RCE (внутренний файл .jar) не найден.
Если я смотрю на in_path
во время отладки, значение:
(sun.nio.fs.Windowspath) src/dictionary
И ниже кучу информации о in_path:
Это все работает на моем компьютере, и я мог бы поклясться, что он один раз работал на компьютере пользователя ...
Как я могу definefile
(см. строку с **********, чтобы разрешить копирование внутреннего файла (src/dictionary
) на компьютер пользователя?
Вот Netbeans вид проекта:
Вы должны открыть его в качестве ресурса, если он упакован в приложениях классов. –
@ DaveNewton - здесь мне нужна помощь: синтаксис открытия ресурса. Я Googling ... это не помогает. (И что имеет отношение к классу классов приложений к компьютеру пользователя?) Я потерялся здесь ... – DSlomer64