Wednesday, 25. October 2006, 14:36:46
java, io, nio, channel ...
package javaexe.io;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.UnsupportedEncodingException;
/**
* @author ruben
*/
public class Read {
public static void main(String[] args) {
File aFile = new File("D:/2.txt");
BufferedReader bReader = null;
FileInputStream inFile = null;
String s = null;
try{
inFile = new FileInputStream(aFile);
} catch(FileNotFoundException e) {}
try {
bReader = new BufferedReader(new InputStreamReader(inFile, "UTF-8"));
} catch(UnsupportedEncodingException e) {}
try {
while(true) {
s = bReader.readLine();
if(s == null) break;
System.out.println(s);
}
} catch(IOException e) {}
System.out.println("读取文件完成!");
System.exit(0);
}
}
/************** 另一种方法 *******************/
package javaexe.io;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
/**
*
* @author ruben
*/
public class Channel {
public static void main(String[] args) {
File aFile = new File("D:/2.txt");
FileInputStream inFile = null;
FileChannel inChannel = null;
ByteBuffer bb = ByteBuffer.allocateDirect(4096);
Charset cs = Charset.forName("UTF-8");
StringBuffer sb = new StringBuffer(1024);
try{
inFile = new FileInputStream(aFile);
} catch(FileNotFoundException e) {}
inChannel = inFile.getChannel();
try {
while(inChannel.read(bb) != -1) {
bb.flip();
CharBuffer cb = cs.decode(bb);
sb.append(cb.toString());
bb.clear();
}
inFile.close();
} catch(IOException e) {}
System.out.println(sb.toString());
System.out.println(sb.length());
System.out.println("读取文件完成!");
System.exit(0);
}
}
不知道怎么格式化,哎!也只有将就了!!
第一个是原始的io操作方式,感觉比较简单。
后一种是加入了通道概念的新io,能够自己操作缓冲大小,类型,并且可以得到文件大小后再决定创建怎样的缓冲,并且可以使用镜像文件,可以提供读写双向能力。
个人测试效率没有太大差异,也许是单文件没有压力的原因!在字符集转换的时候,刚开始不知道在nio中如何使用转换,后来才知道了Charset.decode()方法。还比较简单。
/**
* Sometimes , the only way to stay sane is go a little crazy .
*/
分享到:
相关推荐
#### `java.io.Reader`:字符流的读取器 `java.io.Reader`是所有字符输入流的超类。它主要用于读取字符数据,通常以Unicode编码(如UTF-8)的形式。这意味着`Reader`能够处理任何由16位字符组成的文本数据,这在...
在Java编程中,"java.io.FileNotFoundException: ***** (Too many open files)" 是一个常见的错误,意味着程序尝试打开的文件数量超过了操作系统的限制。这个错误通常出现在处理大量文件或长时间运行的程序中,尤其...
3. **文件映射缓冲区**:对于大文件的处理,Java.nio提供了一个名为`MappedByteBuffer`的类,可以直接将文件映射到内存,避免了多次读写操作,极大地提高了效率。 4. **选择器(Selector)**:选择器允许程序同时...
本资源“java_io.rar”提供了关于如何在Java中进行文件操作的示例代码,包括读取、移动、删除和复制文件等常见任务。我们将深入探讨这些主题,以便更好地理解Java I/O API的使用。 首先,让我们从读取本地文件开始...
Java.io包是Java编程语言中非常重要的一个标准库,它提供了丰富的类和接口,支持多种输入/输出流的处理方式,包括文件I/O、网络通信等场景。Java.io包的核心设计思想是以流(Stream)为基础,通过不同的流类型来处理...
实现 `Serializable` 接口后,可以通过 `java.io.ObjectOutputStream` 将对象写入文件或通过网络传输,也可以使用 `java.io.ObjectInputStream` 从文件读取对象或将对象从网络接收。 #### 三、序列化过程 序列化的...
例如,通过使用LumenWorks.IO.Csv命名空间中的CsvReader类,开发者可以快速读取CSV文件,并将其转换为强类型的数据结构。 对于C++开发者,虽然C++本身不直接支持DLL,但可以使用DllImport特性来调用lumenworks....
IO流的概念是Java.IO的核心,它将数据传输抽象为一系列连续的数据流,实现了数据的读写。 在Java中,IO操作主要分为字节流和字符流两大类,分别由`java.io.InputStream`和`java.io.OutputStream`以及`java.io....
在Java IO包中,还有许多其他的类,如DataInputStream和DataOutputStream,它们用于读写基本数据类型;FileReader和FileWriter用于文件的字符读写;ObjectInputStream和ObjectOutputStream则支持序列化和反序列化...
在Java编程语言中,输入/输出(IO)是处理数据传输的核心部分,特别是在与文件系统交互时。本文将深入探讨Java中的基本文件操作,包括文件的移动、读写以及文本文件的读写。 首先,让我们从文件操作开始。在Java中...
9. **文件内容读写**:提供方便的方法来读取和写入文件内容,包括读取整个文件到字符串,或者写字符串到文件。 10. **临时文件和目录**:方便地创建临时文件和目录。 11. **对象序列化和反序列化**:简化了对象到...
在这个主题中,我们将深入探讨Java如何执行简单的文件读写和追加操作。 首先,Java中的文件IO操作主要依赖于`java.io`包中的类,如`File`、`FileReader`、`FileWriter`、`BufferedReader`和`BufferedWriter`等。在...
3. **BufferedReader和BufferedWriter**:在Java中,`java.io.BufferedReader`和`java.io.BufferedWriter`类用于读写文件。这两个类允许我们指定文件的字符编码,通过构造函数传入`Charset`对象。 4. **文件读写...
在Java编程中,读取和操作TXT文档是常见的任务,特别是在处理日志、配置文件或者进行数据交换时。本文将详细讲解如何使用Java File类和相关的I/O流来实现这一功能。 首先,让我们理解`java file`的概念。在Java中,...
`org.apache.commons.io`是这个库的核心包,包含了许多与文件、流、过滤器、读写操作相关的类和工具。 1. **文件操作**: `FileUtils` 类提供了大量的静态方法,用于执行文件和目录的操作,如复制、移动、删除、创建...
这个类在Java开发中被广泛使用,尤其是在处理大量的文件读写和管理任务时。下面将详细介绍`FileUtils`类中的主要功能和知识点。 1. **读取文件** - `readFileToString(File file, Charset encoding)`: 这个方法...
通过编写代码来读写文件、处理数据流以及实现对象序列化,可以更好地理解和掌握这些概念。这个教程中的习题将提供这样的实践机会,帮助你加深对Java I/O的理解。同时,鼓励大家共享资源,互相学习,共同进步。
北大青鸟的课程中,`java.io`的经典例子通常会涵盖基本的文件读写、流的使用、数据转换等关键概念。以下是基于这个主题的一些详细知识点: 1. **流的概念**: 流是数据的序列,可以代表输入或输出。Java中的I/O流...
在Java编程语言中,`java.io`包是用于输入/输出(I/O)操作的基础部分,包含了许多类和接口,使得开发者能够处理数据流、字符流、对象序列化、磁盘文件以及网络连接等任务。本篇文章将深入探讨`java.io`包中的关键概念...
我们将主要探讨Java中的文件流读写技术,这是实现这个系统的关键部分。 首先,让我们了解一下Java中的I/O(输入/输出)系统。Java提供了丰富的API来处理各种类型的I/O操作,包括文件读写。核心的类位于`java.io`...