class2.processDataFromInputStream(cbb.getInputStream()); 单线程情形 // buffer all data in a circular buffer of infinite size CircularByteBuffer cbb =newCircularByteBuffer(CircularByteBuffer.INFINITE_SIZE); class1.putDataOnOutputStream(cbb.getOutputStream()); class2.processDataFromInputStream(cbb.getI...
try (BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream()); FileChannel channel = new FileInputStream(file).getChannel()) { ByteBuffer buffer = ByteBuffer.allocate(1024); while (channel.read(buffer) != -1) { buffer.flip(); bos.write(buffer.array(), 0, buffer.limi...
效率会非常低。 更好的方法是用InputStream.read(byte[] b)或者InputStream.read(byte[] b,int ...
class1.putDataOnOutputStream(cbb.getOutputStream()); } } ).start(); class2.processDataFromInputStream(cbb.getInputStream()); AI代码助手 如上,CircularByteBuffer将InputStream和OutputStream作为其属性,相对于方法二使用更为简化,且更易理解。 注意: 方法二和方法三使用类似,但是其不建议再同一个线程中处...
在Java中,将OutputStream转换为InputStream是一个常见的操作,通常用于在不同组件或类之间传输数据。以下是几种实现这一转换的方法: 1. 使用字节数组作为缓存 这是最简单的方法,适用于数据量较小的情况。通过先将数据写入一个ByteArrayOutputStream,然后再将结果转换为ByteArrayInputStream。 java import java.io.Byte...
1. CircularByteBuffer cbb = new CircularByteBuffer(); 2. new Thread( 3. new Runnable(){ 4. public void run(){ 5. class1.putDataOnOutputStream(cbb.getOutputStream()); 6. } 7. } 8. ).start(); 9. class2.processDataFromInputStream(cbb.getInputStream()); ...
InputStreamReader:将字节输入流转换为字符输入流,可以指定字符编码 Reader 类常用方法如下 基于BufferedReader 读取文件的一段代码如下: java publicstaticvoidmain(string[] args)throwsException{ String path ="file_dir.mov";//1:创建FileReaderFileReader fileReader =newFileReader(path);//2:基于FileReader创建Buffe...
上面这行代码是ByteBuffer的又一个实例化方法,直接分配大小为512的byte数组作为缓冲区。public static void readContentToAnotherFile(String sourceFilePath,String targetFilePath){ ByteBuffer byteBuffer = ByteBuffer.allocate(512);try(FileInputStream inputStream = new FileInputStream(sourceFilePath);FileChannel ...
你可以更改缓存大小而不必受限于管道缓存区1K的固定缓存大小。 多线程情形: CircularByteBuffer cbb = new CircularByteBuffer(); new Thread( new Runnable(){ public void run(){ class1.putDataOnOutputStream(cbb.getOutputStream()); } } ).start(); class2.processDataFromInputStream(cbb.get...
另一种方式是使用InputStream.getChannel().read(ByteBuffer dst),通过NIO(New I/O)API,可以更高效地读取大量数据:ByteBuffer buffer = ByteBuffer.allocateDirect(1024);while (in.getChannel().read(buffer) != -1) { buffer.flip();byte[] bytes = new byte[buffer.remaining()];buffer....