2016-08-31 9 views
-2

Я сохранил двоичные данные в FileOutputStream, но когда я проверяю длину данных до и после того, как обнаружил, что он изменяется с 72 до 106. Это мой метод:java: Длина данных после записи в потоке

inputStream = new FileInputStream(certificate_file); 
/*Certificate file is a Path of a binary file */ 
pubkey = readFromStream(inputStream, 0, 71); 

System.out.println("length of pubkey: "+pubkey.length()); 
/* This return : length of pubkey: 72 */ 

writeToStream(path + "pubkey.bin", pubkey); 
inputStream = new FileInputStream(path + "pubkey.bin"); 
pubkey = readFromStream(inputStream); 
System.out.println("length of pubkey: "+pubkey.length()); 
/* This return : length of pubkey: 106 */ 

метод writeToStream для записи данных в OutputStream: метод

public void writeToStream(String path, String data) 
     throws FileNotFoundException { 
    OutputStream os = new FileOutputStream(path); 
    PrintStream printStream = new PrintStream(os); 
    printStream.print(data); 
} 

readFromStream для чтения данных из потока:

public static String readFromStream(InputStream inputStream, int begin, int end) throws Exception { 

    int i = 0; 
    int data = inputStream.read(); 
    String out = ""; 
    while (data != -1) { 
     if (i >= begin && i <= end) { 
      out += (char) data; 
     } 
     data = inputStream.read(); 
     i++; 
    } 

    return out; 
} 

    public static String readFromStream(InputStream inputStream) throws Exception { 

    int i = 0; 
    int data = inputStream.read(); 
    String out = ""; 
    while (data != -1) { 

      out += (char) data; 

     data = inputStream.read(); 
     i++; 
    } 

    return out; 
} 

Почему у меня есть эта проблема?

+2

Пожалуйста, отредактируйте ваш вопрос, чтобы включить [mcve]. –

+4

«PrintStream'' не для двоичных данных. И как именно вы проверяете длину до и после? – f1sh

+0

Можете ли вы предоставить полный код? –

ответ

0

Я решил проблему, я преобразовал данные из String в байты [], и я изменил чтение в readFromStream на readAllBytes.