2016-08-31 4 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方法:ストリームからデータを読み取るため

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からbytes []に変換し、readFromStreamの読み込みをreadAllBytesに変更しました。

関連する問題