2016-06-24 3 views
3
アンドロイド

でStringにPDFに変換:私はこの出力があることを発見した私は文字列にPDFファイルを変換するには、次の機能を使用していた

amF2YS5pby5GaWxlSW5wdXRTdHJlYW1ANTM1MDhmNTg= 

 private String GetString(String filepath) throws IOException { 
     InputStream inputStream = new FileInputStream(filepath); 
     String inputStreamToString = inputStream.toString(); 
     byte[] byteArray = inputStreamToString.getBytes(); 
     String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT); 
     return encoded; 
    } 

私は出力を得ました違う。確かに2MBのpdfファイルをエンコードすると、それほど短くできないからです。実際には私はPHPのサーバーでbase64デコードされ、出力は無効なPDFでした。だから私の質問は、機能に欠けているものですか?

問題が解決しました。次はこれを行うには正しいコードです:

private String GetString(String filepath) throws IOException { 
      InputStream inputStream = new FileInputStream(filepath); 
      byte[] byteArray = IOUtils.toByteArray(inputStream); 
      String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT); 
      return encoded; 
     } 
+0

どういうところが間違っていますか?あなたは正しい結果を知っていますか?最後に、あなたは何をしたいですか? –

+1

別のエンコーディングを使用する必要があるかもしれませんか? UTF-8? pdfが保存されたのと同じでなければなりません。 –

+0

Uが2MBのpdfファイルを文字列に変換するかどうかを確認するには、これは短くてとても小さいのですか?さらに、私はPHP64でデコードされたbase64の出力は無効なpdfだったので...こうして私は出力が間違っていることを知っています。 @Sergey Glotov –

答えて

0

間違った部分がある:String inputStreamToString = inputStream.toString();。結果として入力ストリームの内容を取得することはできませんが、 "FileInputStream @ 021849"のようなものしか得られません。あなたが別の方法でストリームから読み込む必要があります

、例えば:Android FileInputStream read() txt file to String

ところで、代わりに文字列にファイルを読み込み、バイト配列に変換で、あなたはまっすぐバイト配列にファイルを読み込むことができます。

+0

はい。私はすでにそれを行う方法を見つけました。 –

-1

2番目のコードで解決できます。 しかし、 "IOUtils"は機能コードです。

+0

これは質問に対する答えを提供しません。十分な[評判](https://stackoverflow.com/help/whats-reputation)があれば、[投稿にコメントする]ことができます(https://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューから](/レビュー/低品質の投稿/ 17801702) – clemens

関連する問題