旧I/O类库中有三被改进了,可以产生FileChannel,它们是:FileInputStream、FileOutputStream
以及可读可写的RandomAccessFile
。Reader和Writer字符模式类不能用于产生通道,但是java.nio.channels.Channels类能提供实用方法在通道中产生Reader和Writer。
public static void main(String[] args) throws Exception {
// 写文件
FileChannel fc = new FileOutputStream("data.txt").getChannel();
fc.write(ByteBuffer.wrap("Some text ".getBytes()));
fc.close();
// 在文件尾写入
fc = new RandomAccessFile("data.txt", "rw").getChannel();
fc.position(fc.size()); // 移到文件尾
fc.write(ByteBuffer.wrap("Some more".getBytes()));
fc.close();
// 读文件
fc = new FileInputStream("data.txt").getChannel();
ByteBuffer buff = ByteBuffer.allocate(1024);
fc.read(buff);
buff.flip();
while (buff.hasRemaining())
System.out.print((char) buff.get());
}
分享到:
相关推荐
根据提供的文件信息,我们可以提取并总结出关于Java NIO(New Input/Output)的重要知识点。 ### Java NIO 概述 Java NIO 是 Java 平台的一个重要特性,首次出现在 Java 1.4 版本中。它为 Java 开发者提供了一套...
Java NIO支持多种类型的通道,包括文件通道(FileChannel)、套接字通道(SocketChannel)和服务器套接字通道(ServerSocketChannel)等。通道可以同时进行读写操作,并且可以实现异步读写。 2. **缓冲区(Buffers...
2. `java.nio.channels`:这个包包含一系列Channel接口和它们的实现,如FileChannel、SocketChannel等。Channel代表了一个开放的I/O资源,数据可以通过Channel进行传输。Selector是这个包中的另一个重要组件,它允许...
fileChannel.read(buffer); // 切换buffer状态以便读取 buffer.flip(); // 从buffer中读取数据 while (buffer.hasRemaining()) { System.out.print((char) buffer.get()); } // 清空buffer以便再次使用 buffer....
5. **文件系统操作**:NIO提供了一组新的API来处理文件系统操作,如文件通道的映射、文件属性的获取和修改、异步文件操作等,这些功能比标准的File类更强大。 6. **管道(Pipe)**:管道是两个线程之间的单向数据...
1. **通道(Channels)**:Java NIO中的通道类似于流,但它们是双向的,可以读写数据。常见的通道类有FileChannel、SocketChannel、ServerSocketChannel和DatagramChannel。 2. **缓冲区(Buffers)**:缓冲区是...
- `fileChannel.read(buffer)`方法将文件数据读取到缓冲区。如果已到达文件末尾,返回-1。 - `buffer.flip()`将缓冲区从写模式切换到读模式,以便可以读取之前写入的数据。 - `buffer.get()`获取并移除缓冲区中的一...
传统的Java I/O基于字节流和字符流,而NIO则提供了通道(Channels)和缓冲区(Buffers)的概念,以及非阻塞I/O操作的能力。本资料"java-nio.rar"主要探讨的是如何使用Java NIO实现异步连接池,这在高并发场景下尤其...
在Java NIO中,可以使用`FileChannel`类来代表一个文件通道,它可以从一个通道读取数据并写入另一个通道。以下是一个简单的文件复制示例: ```java import java.io.IOException; import java.nio.channels....
import java.nio.channels.FileChannel; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class FileCopyWithProgress extends JFrame { private JProgressBar ...
1. **FileChannel**:`java.nio.channels.FileChannel`是用于读写文件的通道,可以从一个文件通道向另一个文件通道直接传输数据,避免了中间缓冲区的开销。在文件复制中,我们通常使用`transferTo()`和`transferFrom...
import java.nio.channels.FileChannel; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; ...
- **`java.nio.channels`**:定义了一系列处理 I/O 的 Channel 接口以及这些接口在文件系统和网络通信上的实现。这是 NIO API 的核心。 - **`java.nio.channels.spi`**:定义了可用来实现 channel 和 selector API ...
在Java NIO中,`java.nio.channels.FileChannel`类是用于文件操作的主要接口。它提供了从文件读取和写入数据的方法。例如,我们可以使用`FileChannel.write()`方法将数据从缓冲区写入文件。下面是一个简单的示例,...
import java.nio.channels.FileChannel; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import javax.swing.filechooser.FileFilter; 实验...
5. **文件系统API**:NIO还提供了`java.nio.file`包,包含一系列与文件系统交互的类,如Files、Paths等。 Java NIO的主要优势在于非阻塞特性。在BIO中,如果一个线程正在读取或写入数据,那么这个线程将被阻塞,...
import java.nio.channels.FileChannel; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; public class AutoCharsetReader { public static void main(String[] args) throws ...
Java NIO提供了多种通道,如文件通道(FileChannel)、套接字通道(SocketChannel)和服务器套接字通道(ServerSocketChannel)等。通道可以进行读写操作,并且可以同时打开多个通道进行并发处理。 2. **缓冲区...
1. **通道(Channels)**:在Java NIO中,数据通过通道进行传输。通道是与I/O设备交互的接口,如文件、套接字、管道等。它们是双向的,可以同时读写。常见的通道类有FileChannel、SocketChannel、...