Запись Java-апплета со знаком в текстовый файл - PullRequest
2 голосов
/ 12 июня 2009

Я хочу заставить апплет записывать в текстовый файл. Я думаю, что преодолел проблему безопасности с моим собственным сертификатом, но текстовый файл не получает вывод.

Мой апплет можно увидеть на tomrenn.com / fallball , и он должен спросить, доверяете ли вы сертификату.

Я не уверен, что апплет может писать в текстовый файл в размещенном в Интернете содержимом, поэтому я спрашиваю, возможно ли это; а если нет, то хотя бы сможете сделать это на локальной машине. Я использовал FileOutputStream, но мой учитель рекомендовал этот очень простой метод вывода.

public void writeToFile()
{
  try {
     java.io.File file = new java.io.File("highscores.txt");
     java.io.PrintWriter output = new java.io.PrintWriter(file);
     output.print(name + " " +score);
     output.close();
  } catch (IOException e) {
     System.err.println ("Unable to write to file");
     System.exit(-1);
  }
}

Это не то, что я буду реализовывать, просто пытаюсь увидеть, получу ли я какой-либо вывод. Спасибо за просмотр моего вопроса!

Ответы [ 4 ]

3 голосов
/ 12 июня 2009

Из апплета вы не можете напрямую записывать в файловую систему сервера. Вы можете отправить запрос серверу, который заставляет сервер выполнять запись в свою файловую систему, но у апплета нет способа записи в файловую систему на удаленном компьютере. (Конечно, если он не смонтирован NFS или иным образом.) Чтобы выдать такой запрос, вы можете использовать, например, Apache HttpClient для выдачи HTTP-запросов. Это может быть более тяжелым, чем вы ищете. Вы также можете попросить клиента выдать POST-запрос серверу, чтобы он сказал: «Это мой высокий балл» и позволить серверу управлять высокими баллами.

Подписанный апплет имеет полное право записывать в локальную файловую систему человека, запускающего апплет. Если вы пишете в «текущий каталог» (а не в абсолютный полный путь), убедитесь, что вы знаете, в каком каталоге работает апплет. В противном случае вы действительно можете создать файл, но не сможете его найти!

2 голосов
/ 12 июня 2009

Если вы хотите, чтобы апплет сохранял данные на локальном компьютере, с 6u10 доступно javax.jnlp.PersistenceService. Создать защищенный «подписанный апплет» сложно, и я бы никому его не рекомендовал.

1 голос
/ 01 декабря 2012

просто подпишите свой апплет. легко использовать netbeans.

  1. открыть проект в netbeans.
  2. щелкните правой кнопкой мыши по вашему проекту и выберите свойства, теперь у вас появится новое окно.
  3. перейдите> приложение> веб-запуск в этом окне.
  4. установите флажок включить веб-запуск.
  5. нажмите кнопку настройки при подписании и выберите «сам подписанный сгенерированным ключом».
  6. установите флажок «дескриптор апплета» и выберите целевой апплет.
  7. нажмите ок.

  8. пересобрать проект (теперь netbeans будет создавать сертификаты со всеми привилегиями)

  9. используйте "launch.html" в ваших проектах dist dir для запуска апплета через jnlp.

Вот и все.

** используемая версия NetBeans = 7,0 ** используется JDK = 1,6 ** Срок действия сертификатов истекает через 6 месяцев.

Спасибо

1 голос
/ 12 июня 2009

Апплеты запускаются на клиенте, поэтому не могут получить доступ к диску сервера. Размещенный вами код запишет на локальный диск клиента. Я бы предложил изменить его, чтобы указать каталог, в котором вы хотите разместить файл. Домашний каталог пользователей может показаться хорошим местом для этого

java.io.File file = new java.io.File(System.getProperty("user.home"), "highscores.txt");
...