`

stream-->流的输入和输出

阅读更多
package stream.demo1;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;

public class TransferTo
{
    
    /**
     * 相对于ChannelCopy,该方法具有更好的效率
     */
    public static void main(String[] args)
        throws IOException
    {
        if (args.length != 2)
        {
            System.out.println("arguments : sourcefile destfile");
            System.exit(1);
        }
        FileChannel in = new FileInputStream(args[0]).getChannel();
        FileChannel out = new FileOutputStream(args[1]).getChannel();
        // 把输入流和输出流相连,在数据的读取和写入时可以考虑这个
        in.transferTo(0, in.size(), out);// or out.transferFrom(in, 0, in.size());
        
    }
    
}
 
package stream.demo1;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class ChannelCopy
{
    private static final int BSIZE = 1024;
    
    public static void main(String[] args)
        throws Exception
    {
        if (args.length != 2)
        {
            System.out.println("arguments : siyrcefuke destfuke");
            System.exit(1);
        }
        FileChannel in = new FileInputStream(args[0]).getChannel();
        FileChannel out = new FileOutputStream(args[1]).getChannel();
        ByteBuffer buffer = ByteBuffer.allocate(BSIZE);
        while (in.read(buffer) != -1)
        {
            buffer.flip();
            out.write(buffer);
            buffer.clear();
        }
    }
}
 
package stream.demo1;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class GetChannel
{
    private static final int BSIZE = 1024;
    
    public static void main(String[] args)
        throws Exception
    {
        // FileChannel用于读取、写入、映射和操作文件的通道。
        FileChannel fc = new FileOutputStream("data.txt").getChannel();
        
        fc.write(ByteBuffer.wrap("Some more".getBytes()));// ByteBuffer.wrap("Some more".getBytes()) 将字节数组包装到缓冲区中。
        fc.close();
        // RandomAccessFile文件操作类,RandomAccessFile是一个很特殊的IO操作类,对文件可以既可以读,也可以写,甚至可以跳过一些数据进行操作
        fc = new RandomAccessFile("data.txt", "rw").getChannel();
        fc.position(fc.size());// 把指针移动fc.size的距离进行数据操作
        fc.write(ByteBuffer.wrap("Some more".getBytes()));
        fc.close();
        fc = new FileInputStream("data.txt").getChannel();
        // ByteBuffer.allocate(BSIZE) 分配一个新的字节缓冲区
        ByteBuffer buffer = ByteBuffer.allocate(BSIZE);
        fc.read(buffer);
        
        buffer.flip();
        while (buffer.hasRemaining())
            System.out.print((char)buffer.get());
    }
}
分享到:
评论

相关推荐

    解决struts2下载异常的jar包 struts2-sunspoter-stream-1.0.jar

    -- 下载文件输出流定义 --> <param name="inputName">downloadFile</param> </result> </action> </package> 在这种方式下,只需添加一个result-type,将原有的result中type改为“streamx”,其他一律不变,在...

    前端开源库-is-stream-ended

    流有四种类型:可读流、可写流、双工流(Duplex)和 Transform 流,它们各自对应不同的输入和输出模式。例如,HTTP 响应、文件系统操作、加密解密等都涉及到流的概念。 `is-stream-ended` 库的主要功能是提供一个...

    jiangdx-stream-master.zip

    8. **网络通信中的流**:在网络编程中,如Socket通信,数据通常是通过输入流(InputStream)和输出流(OutputStream)进行读写。这些流允许我们按需读取或发送数据,而不是一次性加载整个内容。 在"jiangdx-stream-...

    deepstream-test3-zyh.tar.gz

    2. 配置文件:这些文件定义了DeepStream应用的参数,包括模型的路径、输入输出格式、帧率、分辨率等。 3. 源码:包含了实现目标跟踪和不同sinkType输出的代码,开发者可以通过阅读和修改这些代码来定制自己的解决...

    Java学习资料-输入输出流

    Java中的I/O流分为四类:字节流(Byte Streams)和字符流(Character Streams),以及节点流(Stream Nodes)和处理流(Stream Filters)。在学习输入/输出流时,了解这些分类及其用途至关重要。 1. **字节流和字符...

    基于deepstream-python yolov8的车辆识别检测模型.完整代码详细教程

    2. 创建一个DeepStream配置文件(如`ds_config.txt`),定义输入流、模型参数、输出和缓冲区大小等。你需要指定模型路径、批处理大小和推理的其他设置。 3. 编写Python脚本,使用DeepStream API加载配置文件、初始化...

    前端开源库-stream-promise

    3. **转换流**(Transform Stream):此库也支持转换流,允许开发者在数据从输入流流向输出流的过程中对数据进行处理和转换。 4. **管道操作**(Pipeline):`stream-promise`提供了一种方法来连接多个流,形成一个...

    JAVA范例 七)输入/输出流---字符流

    在Java编程语言中,输入/输出流(Input/Output Stream,简称I/O流)是处理数据传输的基础。本文将深入探讨字符流的概念,包括它的作用、类型以及如何在实际编程中应用。首先,我们理解一下标题中的“字符流”:在...

    deepstream-yolov5-python.zip

    1. `config` - DeepStream的配置文件,用于定义输入源、输出格式、模型参数等。 2. `model` - YOLOv5的模型权重文件,用于加载到DeepStream中进行推理。 3. `python_scripts` - 包含使用Python API编写的脚本,用于...

    C++程序设计基础PPT课件10-输入输出流

    在C++编程语言中,输入输出流(Input/Output Stream,简称I/O流)是处理数据传输的关键概念,尤其在程序与外部设备如显示器、键盘、文件等进行交互时。本节将深入讲解C++程序设计基础中的输入输出流,包括流类、流...

    spring-integration-stream-4.0.2.RELEASE.zip

    在Spring Integration中,流处理允许开发者定义数据流,这些数据流可以从一个或多个输入源接收数据,通过一系列处理步骤(例如过滤、转换),然后将结果发送到一个或多个输出目标。Java集合在这里可以作为数据处理的...

    java输入输出流,电子课件

    在Java中,输入输出流分为两大类:字节流(Byte Stream)和字符流(Character Stream)。字节流处理单个字节的数据,而字符流处理Unicode字符。Java的I/O流体系由四个主要接口构成:InputStream和OutputStream处理...

    JAVA输入输出流实验报告

    在Java中,输入输出流分为两大类:字节流(Byte Stream)和字符流(Character Stream)。本次实验主要探讨了这两类流的使用,并通过实例代码展示了如何进行基本的输入输出操作。 首先,字节流主要用于处理二进制...

    C++面向对象程序设计-输入输出流实验报告.docx

    本实验报告主要关注C++中的输入输出流(I/O Stream),这是C++处理数据输入和输出的核心机制。输入输出流库使得程序员能够方便地与标准输入(如键盘)、标准输出(如显示器)以及文件进行交互。 【实验目的】 1. *...

    实验9 Java输入输出流.doc

    Java输入输出流是Java编程中一个非常重要的概念,主要用于数据的读取和写入操作,包括文本文件和二进制文件。在实验9中,主要目的是理解和掌握I/O流的分类,以及如何进行文本和二进制文件的读写。 I/O流在Java中被...

    算法部署-使用deepstream+tensorrt+yolov4实现多路输入实时多行人目标检测-附项目源码-优质项目实战

    在本项目中,我们主要探讨如何利用DeepStream、TensorRT和YOLOv4技术实现多路输入的实时多行人目标检测。这是一个高级的计算机视觉应用,涵盖了深度学习模型的优化与部署,以及实时视频流处理的关键技术。以下是相关...

    文件上传/下载使用输入输出流操作文件

    在Java编程中,文件上传和下载是常见的任务,通常涉及到输入输出流(Input/Output Stream)的操作。输入输出流是Java I/O系统的基础,用于在内存与外部存储设备之间传输数据。下面将详细讲解如何使用输入输出流实现...

    java输入输出流与文件处理

    **输入输出流与文件处理**在编程领域占据着核心地位,特别是在Java中,通过`java.io`包提供了丰富的类和接口来支持输入输出操作。这包括从键盘读取用户输入、从文件或网络读取数据、以及将数据写入文件或网络等场景...

    JAVA输入输出流详细解读

    总之,JAVA的输入输出流体系不仅提供了丰富的功能,还通过层次化的设计和统一的接口,大大简化了开发者的学习曲线和代码实现的复杂度。通过深入理解这些概念和方法,开发者可以更高效地处理各种数据输入输出场景。

Global site tag (gtag.js) - Google Analytics