2015-05-11 8 views
6

Zadanie:Dziwne symbole podczas korzystania bajt oparte FileOutputStream, FileWriter char oparte jest OK

Napisz aplikację Java, który tworzy plik na lokalnym systemie plików który zawiera 10000 losowo generowanych wartości całkowite z zakresu od 0 100000. Wypróbuj najpierw za pomocą strumienia bajtowego, a następnie za pomocą strumienia opartego na znakach. Porównaj rozmiary plików utworzone przez dwa różne podejścia.

Stworzyłem strumień bajtowy. Po uruchomieniu tego programu w fileOutput dostaję dziwne symbole. Czy robię coś źle ?

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(); 
    } 
} 

Kiedy używam strumienia char oparte to działa:

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(); 

    } 
} 

Odpowiedz

2

Pisanie regularne wyjścia do pliku bezpośrednio z FileOutputSream będzie to zrobić, trzeba konwertować swoje wyjście w bajtach pierwszy . coś takiego:

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(); 
} 
Powiązane problemy