Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Дописать файл

Тема в разделе "Разработка плагинов для новичков", создана пользователем CraftCoder, 2 мар 2015.

  1. Автор темы
    CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Я делаю так:
    Код:
    try {
                       if(!file.exists()){
                           file.createNewFile();
                       }
                       PrintWriter out = new PrintWriter(new FileWriter(new String(file.getAbsolutePath()),true));
                 
                       try {
                           for (String str : cmdLog){
                              out.println(str + "\n");
                           }
                           cmdLog.clear();
                       } finally {
                           out.close();
                       }
                   } catch(IOException e) {                   
                   }
    
    но это не помогает и файл переписывается, а не дописывается.
     
  2. Хостинг MineCraft
    <
  3. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Зачем, если
    1. И так println
    2. Символ переноса строки вставляется не так.
     
  4. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    В букките же есть библиотеки гугла, а именно класс Files с методом append(). Это явно сделает твой код проще.
     
  5. Автор темы
    CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    В том то и дело, что println, а оно вместо перехода на следующую строку пишет "." и далее следующая строка.[DOUBLEPOST=1425319359,1425311506][/DOUBLEPOST]Ну так че делать? Может кто код предоставит просто?
     
  6. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Могу завтра попомогать, как доберусь с утра до ide.[DOUBLEPOST=1425320816,1425320595][/DOUBLEPOST]P.S. А зачем new String(file.getAbsolutePath()), когда можно просто file?[DOUBLEPOST=1425320944][/DOUBLEPOST]P.P.S. И зачем это? if(!file.exists()) file.createNewFile();
    Файл если не существует, создастся сам, а проверку вообще корректнее делать file.isFile(), т.к. exists() может вернуть true на директорию. Попробуй убрать эти строки.

    Не люблю я эти Writer-ы, с FileOutputStream мне проще =) хотя у них всех конструкторы одинаковые, вполне одно оборачивает другое.
     
  7. Автор темы
    CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Ок, пошел учить jav'y, а то я ее не знаю.
     
  8. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Попробуй такой код:
    Код:
    File file = ...;
    List<String> cmdLog = ...;
    // ...
    try(OutputStreamWriter osw = new OutputStreamWriter(
        new FileOutputStream(file, true), Charset.forName("UTF-8")))
    {
        for(String str : cmdLog)
            osw.write(str + System.lineSeparator());
        cmdLog.clear();
    } catch(IOException e) {
    }
    (используется try-with-resources, для Java 7+).
     
  9. Автор темы
    CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Спасибо, уже сделал так:
    Код:
    FileWriter out = new FileWriter(file,true);
                 
                       try {
                           for (String str : cmdLog){
                              out.write(str + "\n");
                           }
                           cmdLog.clear();
                       } finally {
                           out.close();
                       }
    
    Все работает.
     
  10. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Зато у тебя не гарантируется utf-8, а зависит от исполняющей системы :)
     

Поделиться этой страницей