`
sunxuecheng
  • 浏览: 24959 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

nio FileChannel

阅读更多
//        Buffer 常见方法:
//        flip(): 写模式转换成读模式
//        rewind() :将 position 重置为 0 ,一般用于重复读。
//        clear() :清空 buffer ,准备再次被写入 (position 变成 0 , limit 变成 capacity) 。
//        compact(): 将未读取的数据拷贝到 buffer 的头部位。
//        mark() 、 reset():mark 可以标记一个位置, reset 可以重置到该位置。
//        Buffer 常见类型: ByteBuffer 、 MappedByteBuffer 、 CharBuffer 、 DoubleBuffer 、 FloatBuffer 、 IntBuffer 、 LongBuffer 、 ShortBuffer 。
//        channel 常见类型 :FileChannel 、 DatagramChannel(UDP) 、 SocketChannel(TCP) 、 ServerSocketChannel(TCP)
//        在本机上面做了个简单的性能测试。我的笔记本性能一般。 ( 具体代码可以见附件。见 nio.sample.filecopy 包下面的例子 ) 以下是参
        String source = "d:/b.txt";
        String dest = "d:/newnewnewnenwnwnewnewne.txt";
        try
        {
            FileInputStream in = new FileInputStream(new File(source));
            FileOutputStream out = new FileOutputStream(new File(dest));
            // 获取源文件和目标文件的输入输出流 
            FileChannel infc = in.getChannel();
            FileChannel outfc = out.getChannel();
            // 创建缓冲区
            ByteBuffer b = ByteBuffer.allocate(1024);
            while(true) {
                // clear方法重设缓冲区,使它可以接受读入的数据
                b.clear();
                int r = infc.read(b);
                // read方法返回读取的字节数,可能为零,如果该通道已到达流的末尾,则返回-1
                if(r == -1) {
                    break;
                }
                // flip方法让缓冲区可以将新读入的数据写入另一个通道
//                写模式转换成读模式
                b.flip();
                outfc.write(b);
               
            }
        }
        catch (FileNotFoundException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
分享到:
评论

相关推荐

    jruby-stdin-channel:JRuby 扩展为 STDIN 公开可中断的 NIO FileChannel

    jruby-stdin-channel JRuby Java 扩展 gem,它从 Java System.in stdin 中提取可中断的FileChannel。 使用这个 gem,在阻塞read方法上调用close将解除阻塞,这与普通的 JRuby $stdin 。 使用close转义阻塞读取仅适用...

    muyinchen#woker#07 Java的NIO之FileChannel1

    7.1 打开一个FileChannel 7.2 从FileChannel通道中读取数据 7.3 向FileChannel中写入数据: 7.4 关闭FileCha

    JavaNIO chm帮助文档

    Java NIO系列教程(七) FileChannel Java NIO系列教程(八) SocketChannel Java NIO系列教程(九) ServerSocketChannel Java NIO系列教程(十) Java NIO DatagramChannel Java NIO系列教程(十一) Pipe Java ...

    java NIO.zip

    Java NIO支持多种类型的通道,包括文件通道(FileChannel)、套接字通道(SocketChannel)和服务器套接字通道(ServerSocketChannel)等。通道可以同时进行读写操作,并且可以实现异步读写。 2. **缓冲区(Buffers...

    NIO 入门.chm,NIO 入门.chm

    **NIO(New Input/Output)是Java编程语言中用于替代标准I/O(BIO,Blocking I/O)的一组API,它提供了非阻塞式的I/O操作方式,极大地提升了Java在处理I/O密集型应用时的性能。NIO在Java 1.4版本中被引入,之后在...

    java NIO 写文件

    在Java NIO中,`java.nio.channels.FileChannel`类是用于文件操作的主要接口。它提供了从文件读取和写入数据的方法。例如,我们可以使用`FileChannel.write()`方法将数据从缓冲区写入文件。下面是一个简单的示例,...

    java nio 读文件

    import java.nio.channels.FileChannel; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; public class FeiNioRead { public static void main(String[] args) { try (FileChannel ...

    java NIO原理和使用

    下面是一个简单的 Java NIO 示例,展示了如何使用 `FileChannel` 和 `ByteBuffer` 进行文件复制: ```java package nio; import java.io.FileInputStream; import java.io.FileOutputStream; import java.nio....

    java nio 尚硅谷 12讲 new

    - Java NIO提供了FileChannel,可以进行文件的读写操作,支持随机访问和映射到内存(Memory-Mapped Files)。 6. **网络编程** - SocketChannel和ServerSocketChannel分别用于处理TCP连接和监听。DatagramChannel...

    nio.rar_FastCopyFile.java_NIO_UseFloatBuffer.java_java nio_文件锁

    Java NIO(New Input/Output)是Java标准库中提供的一种I/O模型,与传统的BIO( Blocking I/O)相比,NIO具有更好的性能和更高的灵活性。NIO的核心组件包括通道(Channel)、缓冲区(Buffer)和选择器(Selector)。...

    java nio 包读取超大数据文件

    ### Java NIO 处理超大数据文件的知识点详解 #### 一、Java NIO简介 Java NIO(New IO)是Java平台上的新输入/输出流API,它提供了与传统IO(即Java IO)不同的数据处理方式。NIO在Java 1.4版本引入,并在后续版本...

    NIO入门pdf分享

    Java NIO中的通道包括FileChannel、SocketChannel、ServerSocketChannel等,它们支持非阻塞读写操作。 2. **缓冲区(Buffer)**:缓冲区是数据操作的主要对象,它提供了一种更有效的方式管理数据。在NIO中,数据总是...

    java nio 写文件

    要使用NIO写文件,首先需要获取FileChannel对象,这可以通过`FileOutputStream`的`getChannel()`方法实现。 2. **缓冲区(Buffers)** 缓冲区是NIO的核心组件,它是数据在通道间传输的容器。Java NIO提供了几种...

    NIO复制文件

    1. **FileChannel**:`java.nio.channels.FileChannel`是用于读写文件的通道,可以从一个文件通道向另一个文件通道直接传输数据,避免了中间缓冲区的开销。在文件复制中,我们通常使用`transferTo()`和`transferFrom...

    java NIO实例

    Java NIO提供了一些常见的通道实现,如SocketChannel(用于网络通信)、FileChannel(用于文件操作)等。 3. **Buffer(缓冲区)**:在NIO中,数据读写都是通过缓冲区进行的。缓冲区是一个可以容纳特定类型数据(如...

    Java NIO实战开发多人聊天室

    05-Java NIO-Channel-FileChannel详解(一).mp4 06-Java NIO-Channel-FileChannel详解(二).mp4 08-Java NIO-Channel-ServerSocketChannel.mp4 09-Java NIO-Channel-SocketChannel.mp4 10-Java NIO-Channel-...

    JAVA-NIO-DEMO

    Java NIO(New IO)是Java 1.4版本引入的一个新模块,它提供了一种不同于传统IO(基于字节流和字符流)的I/O操作方式。传统的IO模型是阻塞式的,而NIO的核心特点是非阻塞,这使得在处理大量并发I/O请求时更为高效。...

    NIO处理大文件

    为了解决这个问题,Java引入了New Input/Output (NIO) 模型,它提供了非阻塞I/O操作,使得在处理大文件时更加高效。本文将深入探讨如何使用NIO处理大文件,并分析其背后的机制和优势。 1. NIO简介: NIO是Java 1.4...

Global site tag (gtag.js) - Google Analytics