2015-10-30 4 views
1

Я создаю приложение, которое требует записи файла для каждого пользователя (в формате JSON).Java FileWriter, не записывающий в файл

Приложение успешно создает файл, но он пуст. В коде я добавил более тонкий вывод, чтобы увидеть, как выглядит преобразованная строка JSON, и я заметил, что она полная (она содержит все, поэтому преобразование в порядке). Но строка отсутствует в файле.

//create a new FileWriter C:/.../42.guser 
     FileWriter writer = null; 

     //for every User 
     for(int i=0; i<users.size(); i++) { 

      try { 
       File f = new File(Users.usersDir.getPath()+"/"+i+".guser"); 

       //Create new file 
       f.createNewFile(); 

       writer = new FileWriter(f); 

       //convert to json and write to file. Here we get the object with KEY = keys[i]. 
       String stringedUsr = gson.toJson(users.get(keys[i])); 

       logger.finer("Converted user: \""+stringedUsr+"\""); //Output seems ok 

       //Write (NOT WORKING) 
       writer.write(stringedUsr); 

       logger.fine("Wrote updated user \""+keys[i]+"\" to file "+f.getCanonicalPath()); 

      } catch (IOException e) { 
       FAILS++; 
       e.printStackTrace(); 
      } 

     } 
     //End of for 

Что я делаю неправильно?

Примечание: я дал приложению все необходимые разрешения. Нет AccessControlExceptions

+3

попробуйте 'flush()' метод, также закройте автора по завершении – sidgate

+3

Просто закрыть его должно быть хорошо. Это будет флеш. –

+1

@AxelMontini Нет, потому что он не будет называть флеш или закрыт ;-) –

ответ

5

Прежде всего подумайте о том, чтобы закрыть своего писателя. При закрытии, он должен первым flush() данные (как указано в док here)

Вы также можете flush() вручную.

Смежные вопросы