使用基于字节的FileOutputStream时,奇怪的符号,基于char的FileWriter是可以的

And*_*rei 7 java file output

任务:

编写一个在本地文件系统上创建文件的Java应用程序,该文件包含10000个随机生成的0到100000之间的整数值.首先使用基于字节的流然后使用基于字符的流来尝试.比较两种不同方法创建的文件大小.

我制作了基于字节的流.运行此程序后,在fileOutput中我得到了一些奇怪的符号.难道我做错了什么 ?

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用基于字符的流时,它可以工作:

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

    }
}
Run Code Online (Sandbox Code Playgroud)

Coq*_*ner 3

直接从 FileOutputSream 将常规输出写入文件即可做到这一点,您需要首先将输出转换为字节。就像是 :

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();
}
Run Code Online (Sandbox Code Playgroud)