2016-04-12 1 views
1

Я пытаюсь создать файл размером 1024. Код приведен ниже.Создать тестовый файл размером 1024 байта с использованием Java

import java.security.*; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.BufferedWriter; 


public class GenerateFile { 
    public static void main(String[] args) { 
    SecureRandom random = new SecureRandom(); 
    byte[] array = new byte[1024]; 
    random.nextBytes(array); 

    for(byte i = 0; i<array.length; i++) { 
     System.out.println(bytes[i]); 
    } 
    try { 
     File file = new File("testfile"); 
     FileWriter out = new FileWriter(file); 
     out.write(bytes); 
     System.out.println("Done .........."); 
     out.close(); 

    if (file.createNewFile()){ 
     System.out.println("File is created!"); 
     } 

    else { 
     System.out.println("File already exists."); 
     } 

    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
} 

Это ошибка, которую я получаю. Я не понимаю, как я могу использовать массив байтов здесь. Опять же, я хочу, чтобы размер файла был 1024 байта.

GenerateFile.java:20: error: no suitable method found for write(byte[]) 
     out.write(bytes); 
     ^
method Writer.write(int) is not applicable 
    (argument mismatch; byte[] cannot be converted to int) 
method Writer.write(char[]) is not applicable 
    (argument mismatch; byte[] cannot be converted to char[]) 
method Writer.write(String) is not applicable 
    (argument mismatch; byte[] cannot be converted to String) 
method OutputStreamWriter.write(int) is not applicable 
    (argument mismatch; byte[] cannot be converted to int) 

Спасибо!

ответ

3

Writers and Reader предназначены для написания текста, а не двоичного. Я предлагаю вам использовать FileOutputStream для двоичных файлов.

// to fill with random bytes. 
try (FileOutputStream out = new FileOutputStream(file)) { 
    byte[] bytes = new byte[1024]; 
    new SecureRandom().nextBytes(bytes); 
    out.write(bytes); 
} 

В качестве альтернативы вы можете использовать следующее, предполагая, что каждый символ превращается в один байт.

try (FileWriter out = new FileWriter(file)) { 
    char[] chars = new char[1024]; 
    Arrays.fill(chars, '.'); 
    chars[1023] = '\n'; 
    out.write(chars); 
} 
+1

Как заполнить его случайными числами вместо '.' ? –

+0

@ Y.V используйте 'Random.nextBytes', как вы это делали в своем вопросе. –

+0

@ Y.V по определению текст не случайный, поэтому имеет смысл только двоичный код. –

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