2017-03-03 24 views
-1

私はこれがなぜ起こるのかについて、同様のページを読んだことがありますが、実際にこの問題を解決する方法について実際に説明している人はいません。BufferedInputStreamの無効なマークエラーにリセットする方法を修正しますか?

私のプログラムはバイト配列を.wavファイルに変換しており、バイト配列には約200万の値があります。

String uploadedFileLocation = "C:\\"; 
AudioInputStream source; 
AudioInputStream pcm; 
InputStream b_in = new ByteArrayInputStream(byteArray); 
source = AudioSystem.getAudioInputStream(new BufferedInputStream(b_in)); 
pcm = AudioSystem.getAudioInputStream(AudioFormat.Encoding.PCM_SIGNED, source); 
File newFile = new File(uploadedFileLocation + fileName); 
AudioSystem.write(pcm, AudioFileFormat.Type.WAVE, newFile); 
source.close(); 
pcm.close(); 
+0

どのようなマーク/リセットですか?ここにはありません。 – EJP

+0

@downvoter、それが悪い理由を説明してください。 – HarrietTubmanFan69

+0

'mark()'や 'reset()'が呼ばれているという証拠を提供していないし、編集によって既存の答えが間違っているので、これは悪いことです。 – EJP

答えて

0

mark()を呼び出すときは、より大きなreadLimitを使用します。必要に応じて、BufferedInputStreamコンストラクタに渡されるバッファサイズをそれに応じて増やします。これのデフォルト値は文書化されていませんが、現在は8192です。

BufferedInputStream あなたの状況では、ByteArrayInputStreamのまったく無意味であり、削除する必要があります。 ByteArrayInputStreamsはすでにマークが付けられており、リセットの任意の量をサポートすることができます。

+0

'BufferedInputStream'が必要だと言うことができます。それで私は何をしますか? – HarrietTubmanFan69

+0

@ HarrietTubmanFan69私はすでに最初の段落でそれに答えました。しかし、あなたが投稿したコードのためにそれを必要としません。 – EJP

+0

私が知る限り、あなたは 'readLimit'を増やすことができないので、バッファサイズを増やすことができますか?あるいは、その2つの事柄は同じですか? – HarrietTubmanFan69

関連する問題