2015-09-29 3 views
0
import java.util.Formatter; 
import java.util.Scanner; 

public class JavaApplication3 { 

    public static void main(String[] args) throws Exception 
    { 
     Formatter output = new Formatter("clients.txt"); // open the file 
     Scanner input = new Scanner(System.in); // reads user input 

     int accountNumber; // stores account number 
     String firstName; // stores first name 
     String lastName; // stores last name 
     double balance; // stores account balance 

     System.out.printf("%s\n%s\n%s\n%s\n\n", 
     "To terminate input, type the end-of-file indicator ", 
     "when you are prompted to enter input.", 
     "On UNIX/Linux/Mac OS X type <ctrl> d then press Enter", 
     "On Windows type <ctrl> z then press Enter"); 

     System.out.printf("%s\n%s", 
     "Enter account number (> 0), first name, last name and balance.", 
     "? "); 

     while (input.hasNext()) // loop until end-of-file indicator 
     { 
     // retrieve data to be output 
     accountNumber = input.nextInt(); // read account number 
     firstName = input.next(); // read first name 
     lastName = input.next(); // read last name 
     balance = input.nextDouble(); // read balance 

     if (accountNumber > 0) 
     { 
      // write new record 
      output.format("%d %s %s %.2f\n", accountNumber, 
       firstName, lastName, balance); 
     } // end if 
     else 
     { 
      System.out.println(
       "Account number must be greater than 0."); 
     } // end else 

     System.out.printf("%s %s\n%s", "Enter account number (>0),", 
      "first name, last name and balance.", "? "); 
     } // end while 

     output.close(); // close file 
    } // end main 
} // end class CreateTextFile 

, но при переходе к локализации файла и открытии txt-файла thre нет ничего в этом. Я использую окна, и моя проблема заключается в том, чтобы нанести ущерб файлу. Думаю, помогите мне с тем, как пишите на файл в java.tnxоткрытие файлов на JAVA

+0

Это работает для меня, по крайней мере, на Linux. Попробуйте в Windows сейчас ... –

+0

И это работает для меня и в Windows. –

+0

Просьба уточнить, просматриваете ли вы файл во время работы кода или после того, как программа завершена. Если это первый, то ответ Сатья уместен, но если вы смотрите только на файл, когда программа закончилась, это не объяснит это. –

ответ

0

Выход из java.util.Formatter не записывается немедленно. Вызовите flush(), и данные ожидания будут записаны немедленно.

if (accountNumber > 0) 
    { 
     // write new record 
     output.format("%d %s %s %.2f\n", accountNumber, 
      firstName, lastName, balance); 
      output.flush();//missing this line 
    } 
+0

Код вызывает 'close()' в конце, что приведет к отключению вывода. Это нормально ... –

+0

нет Я тестирую его. также проверил API @JonSkeet. – Satya

+0

Ну, я тоже это испытал, и все было в порядке. Когда вы говорите «также проверял API» - что заставляет вас думать, что закрытие форматирования * не означает «вымывание» файла? Обратите внимание, что документы говорят, что он называет 'close()' в пункте назначения, если он реализует 'Closeable', который будет иметь место для файла ... –

-1
java.util.Formatter will not write until flush() method is called. 
    if (accountNumber > 0){ 
    // write new record 
    output.format("%d %s %s %.2f\n",accountNumber,firstName,lastName,balance); 
    output.flush(); // this is missed. 
    } // end if`enter code here` 
+0

Зачем писать это, это дубликат предыдущего ответа? –

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