2015-04-13 3 views
1

Этот код работает, что странно:При использовании класса Java Formatter, почему конструктор создаст файл txt, но не напишет на него?

import java.util.*; 
import java.io.*; 

public class FileWork { 
    private Formatter r; 

    public void openFile(){ 
     try{ 
      r = new Formatter("c:\\employees.txt"); 
     } 
     catch(Exception e){ 
      System.out.println("You got an error"); 
     } 
    } 

    public void addRecords(){ 
     r.format("%d%s%s%n", 34 , " Matt ", "Jenkins"); 
     r.format("%d%s%s%n", 36 , " John ", "Jackson"); 
    } 
} 

Тогда в другом классе я называю методы.

public class FileWork2 { 
    public static void main(String[] args) { 
     FileWork g = new FileWork(); 
     g.openFile(); //creates file 
     g.addRecords(); //adds records 
    } 
} 

Но следующий код не работает:

import java.io.FileNotFoundException; 
import java.util.Formatter; 

public class FileWork3 { 
    public static void main(String[] args) throws FileNotFoundException { 
     final Formatter x = new Formatter("c:\\GuestList2.txt"); 
     x.format("%d", 10); 
    } 
} 

Этот второй набор кода создает файл GuestList2.txt, но ничего не пишет к нему. Он пуст. Кажется, это работает только тогда, когда Formatter установлен как открытый и закрытый, и вызван из другого класса. Я настолько запутался в правильном способе использования метода формата.

+1

Пожалуйста, отпечатайте свой код с фигурными скобками вверху. – CaffeineToCode

+1

http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#close%28%29 –

+0

См. Также: http://stackoverflow.com/questions/22042609/java- formatter-output – Bobulous

ответ

1

Это было просто потому, что мне нужно было запустить метод close(). Теперь он работает отлично, и я пробовал его по-разному, с Final, со статическими методами, и теперь он отлично пишет вывод. Спасибо за ссылки и комментарии.