2017-03-03 34 views
-1

我已經閱讀了類似的頁面,爲什麼會發生這種情況,但其中沒有一個實際解釋瞭如何解決這個問題。如何修復BufferedInputStream的重置爲無效標記錯誤?

我的程序正在將字節數組轉換爲.wav文件,並且字節數組中有大約2百萬個值。

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。如有必要,可以相應地增加傳遞給構造函數的緩衝區大小。這個默認值是無證的,但目前8192.

但是在你的情況下週圍的BufferedInputStream是完全沒有意義的,應該刪除。 ByteArrayInputStreams已被標記,並且可以支持任意數量的重置。

+0

讓我們說我需要一個'BufferedInputStream'。那我會怎麼做? – HarrietTubmanFan69

+0

@ HarrietTubmanFan69我已經在第一段中回答了。但是你不需要它爲你發佈的代碼。 – EJP

+0

因爲據我所知,你不能增加'readLimit',所以你增加緩衝區大小?或者這兩件事情是一回事嗎? – HarrietTubmanFan69

相關問題