2015-05-11 17 views
6

Görev Tamam:Garip semboller kullanarak bayt tabanlı FileOutputStream, karakter tabanlı FileWriter

0 ile arasında 10000 rasgele oluşturulmuş tamsayı değerleri içeren yerel dosya sistemine üzerinde bir dosya oluşturur bir Java uygulaması yaz 100000. Bunu önce bayt tabanlı bir akış kullanarak ve ardından bir char tabanlı akış kullanarak deneyin. Iki farklı yaklaşımlar tarafından oluşturulan dosya boyutlarını karşılaştırın.

Bayt tabanlı akış yaptım. Bu programı çalıştırdıktan sonra, fileOutput'ta bazı garip semboller alıyorum. Yanlış bir şey mi yapıyorum ? Ben Char tabanlı akışı kullanıyorum zaman

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.Random; 

public class Bytebased { 

    public static void main(String[] args) throws IOException { 

    File outFile = new File("fileOutput.txt"); 
    FileOutputStream fos = new FileOutputStream(outFile); 

    Random rand = new Random(); 
    int x; 

    for(int i=1;i<=10001;i++){ 
     x = rand.nextInt(10001); 
     fos.write(x); 
    } 
    fos.close(); 
    } 
} 

çalışır:

import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.Random; 

public class Charbased { 

    public static void main(String[] args) throws IOException { 

    File outFile = new File("fileOutput2.txt"); 
    FileWriter fw = new FileWriter(outFile); 

    Random rand = new Random(); 
    int x; 
    String y; 
    for(int i=1;i<=10001;i++){ 
     x = rand.nextInt(10001); 
     y=x + " "; 
     fw.write(y); 
    } 

    fw.close(); 

    } 
} 

cevap

2

yapacak bir FileOutputSream doğrudan bir dosyaya düzenli çıkışını yazma, önce bayt halinde çıkışını dönüştürmek gerekir . Bir şey gibi:

public static void main(String[] args) throws IOException { 

    File outFile = new File("fileOutput.txt"); 
    FileOutputStream fos = new FileOutputStream(outFile); 

    String numbers = ""; 

    Random rand = new Random(); 

    for(int i=1;i<=10001;i++){ 
     numbers += rand.nextInt(10001); 
    } 

    byte[] bytesArray = numbers.getBytes(); 
    fos.write(bytesArray); 
    fos.flush(); 
    fos.close(); 
} 
İlgili konular