2013-08-17 7 views
0

Я пытаюсь создать и написать в файл java с помощью средства печати.
Я смотрел How do I create a file and write to it in Java? Я не могу писать в файл. Файл создается, но без текста Может кто-нибудь, пожалуйста, скажите мне, что я пропустил?
БлагодаряЗапись в файл в java

static void createFile() throws FileNotFoundException{ 
    String filename = "nothign.txt"; 
    FileOutputStream connection1; 
    connection1 = new FileOutputStream(filename); 
    PrintWriter printnothing = null; 

    printnothing = new PrintWriter(connection1); 
    printnothing.printf("/nnewline writesomething/n exo"); 
    printnothing.println("trying to write something"); 
}// createFile Method 
+1

Используйте '\ n' вместо'/n' для символа новой строки. – Marcelo

+0

кричит, спасибо за уловку –

+0

, есть ли какое-либо преимущество в производительности (или любое преимущество) для инициализации переменной как null, а затем присвоение ей объекта «новый». чем делать обе в одной строке? – DevZer0

ответ

4

Я считаю, что вам нужно, чтобы закрыть PrintWriter, чтобы очистить содержимое в файл. Попробуйте добавить это в конец своего кода:

printnothing.close(); 
+0

+1 - этот бит меня на днях. –

+2

Короткие и в точку. Хороший ответ. –

0

Вы должны очиститься.

  1. Вы можете автоматически вровень, если поставить true в качестве второго параметра в конструкторе.
  2. Вы можете выполнить ручное управление, позвонив по телефону flush().
  3. Вы можете скрывать неявно, закрывая поток с помощью .close().

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

  1. Вы можете сделать это с явным вызовом .close(), когда вы закончите с этим.
  2. Вы можете воспользоваться Java 7 в примерочных с-ресурса функции со следующим синтаксисом ..

Пример:

try (PrintWriter printnothing = new PrintWriter(new FileOutputStream("nothign.txt"))) { 
    printnothing.printf("stuff"); 
    printnothing.println("stuff"); 
} catch(IOException e) { 
    e.printStacktrace(); // We don't have to close it here, and neither do have to in a finally block - it's handled for us 
} 
+0

IMO здесь слишком много информации, которая не имеет отношения к требованиям OP (заявленных). Он просто хочет знать, почему нет выхода. –

+0

Спасибо Xabster, тщательный ответ –

0

Вам необходимо позвонить либо printnothig.close() (который является то, что вы должны сделать если вы не будете использовать этот объект для печати снова) или printnothing.flush()

+0

Ему нужно закрыть его. Это локальная переменная. Никто другой не может закрыть его. В противном случае происходит утечка ресурсов. – EJP

+0

Вы правы; Я не обращал достаточно пристального внимания, считал, что это переменная класса. –

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