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

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

Discussion in 'Разработка плагинов для новичков' started by CraftCoder, Mar 2, 2015.

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

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

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Я делаю так:
    Code:
    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 Старожил Девелопер Пользователь

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

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

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

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

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

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

    Trophy Points:
    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 Старожил Пользователь

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

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

    Trophy Points:
    123
    Имя в Minecraft:
    Reality_SC
    Попробуй такой код:
    Code:
    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 Старожил Пользователь

    Trophy Points:
    108
    Имя в Minecraft:
    CraftCoderr
    Спасибо, уже сделал так:
    Code:
    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 Старожил Пользователь

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

Share This Page