Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复BufferedInputStream的重置为无效标记错误?_Java - Fatal编程技术网

Java 如何修复BufferedInputStream的重置为无效标记错误?

Java 如何修复BufferedInputStream的重置为无效标记错误?,java,Java,我已经阅读了类似的页面来解释为什么会发生这种情况,但是没有一个页面真正解释了如何解决这个问题 我的程序正在将一个字节数组转换成一个.wav文件,字节数组中大约有200万个值 String uploadedFileLocation = "C:\\"; AudioInputStream source; AudioInputStream pcm; InputStream b_in = new ByteArrayInputStream(byteArray); source = AudioSystem.g

我已经阅读了类似的页面来解释为什么会发生这种情况,但是没有一个页面真正解释了如何解决这个问题

我的程序正在将一个字节数组转换成一个.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();

调用
mark()
时,使用较大的
readLimit
。如有必要,可以相应地增加传递给
BufferedInputStream
构造函数的缓冲区大小。默认值为未记录,但目前为8192


但是,在您的情况下,
ByteArrayInputStream
周围的
BufferedInputStream
完全没有意义,应该删除
ByteArrayInputStreams
已经标记,可以支持任意数量的重置。

什么标记/重置?这里没有。@downvoter,解释为什么它不好。它不好是因为您没有提供任何证据证明调用了
mark()
reset()
,并且因为您的编辑使现有答案毫无意义。我还原了我所做的所有更改。我带着一个问题来到这里,如果我知道
mark()
reset()
做了什么,那么我就不会问这个问题,因为我知道的足够多,可以在不寻求帮助的情况下找到答案。你能假设我已经自学java不到一年了吗?我对java中的每一个新东西都感到非常困惑,而你拒绝解释自己对我一点帮助都没有。(这是我的第一门语言,可能是我的最后一门语言,因为像你这样的人认为每个人脑子里都有一本java字典)让我们说我需要一个
BufferedInputStream
。“那我该怎么办?”哈里特·图布曼凡69我在第一段已经回答了这个问题。但是你发布的代码不需要它。所以,因为据我所知,你不能增加
readLimit
,所以你增加了缓冲区大小?或者这两件事是同一件事?我最初的问题得到了回答,但现在它停止了我的程序,并给出错误消息“EOFEException:null”,您不能将
readLimit
增加到缓冲区大小之外,因此如果您想要>8192,您必须同时增加这两个值。你最后的评论构成了一个全新的问题。