2011-04-16 9 views
9

Dosya başarıyla oluşturuluyor, ancak metin dosyasına bir şey yazdırmak için PrintWriter alamıyorum. Kod:PrintWriter, dosyaya yazdırılamadı

import java.io.File; 
import java.util.Scanner; 
import java.io.IOException; 
import java.io.PrintWriter; 

public class exams { 
    public static void main (String[] args) throws IOException{ 
     Scanner scanner = new Scanner(System.in); 
     System.out.println("How many scores were there?"); 
     int numScores = scanner.nextInt(); 
     int arr[] = new int[numScores]; 

     for (int x=0; x<numScores; x++){ 
      System.out.println("Enter score #" + (x+1)); 
      arr[x] = scanner.nextInt(); 
     } 

     File file = new File("ExamScores.txt"); 
     if(!file.exists()){ 
      file.createNewFile(); 
      PrintWriter out = new PrintWriter(file); 
      for (int y=0; y<arr.length; y++){ 
       out.println(arr[y]); 
      } 
     } 
     else { 
      System.out.println("The file ExamScores.txt already exists."); 
     } 
    } 
} 

cevap

19

Diske yazılan verileri almak için dosyayı yıkamalı ve/veya kapatmalısınız.

kodunuzda out.close() ekleyin:

PrintWriter out = new PrintWriter(file); 
for (int y=0; y<arr.length; y++){ 
    out.println(arr[y]); 
} 
out.close() 
+0

Teşekkürler! Küçük bir şey olduğunu biliyordum. – tim

3

Sen dosyaya yazılır her şeyi sağlamak için baskı akışı ateş basması etkisine sahiptir programı çıkmadan önce PrintWriter kapatmak gerekir. Bu deneyin:

PrintWriter out = null; 
try { 
    //... 
    out = new PrintWriter(file); 
    //... 
} finally { 
    if (out != null) { 
     out.close(); 
    } 
} 
0

printwriter sınıfı, dosyalarla değil, akışlarla çalışır; bu nedenle, bu dosyaya yazamazsınız. FileOutputStream kullanarak bir dosya oluşturmanız gerekir, bundan sonra bu dosyaya yazabilmek için printwriter kullanabilirsiniz. Bunu deneyin:

FileOutputStream exam = new FileOutputStream ("ExamScores.txt"); PrintWriter out = new PrintWriter (sınav, doğru);