`
r2100
  • 浏览: 30422 次
  • 来自: ...
社区版块
存档分类
最新评论

java.io 读取文件

阅读更多

java.io 读取文件

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.InputStream 的区别

    #### `java.io.Reader`:字符流的读取器 `java.io.Reader`是所有字符输入流的超类。它主要用于读取字符数据,通常以Unicode编码(如UTF-8)的形式。这意味着`Reader`能够处理任何由16位字符组成的文本数据,这在...

    java.io.FileNotFoundException: *****(Too many open files)

    在Java编程中,"java.io.FileNotFoundException: ***** (Too many open files)" 是一个常见的错误,意味着程序尝试打开的文件数量超过了操作系统的限制。这个错误通常出现在处理大量文件或长时间运行的程序中,尤其...

    Java.nio 与Java.io比较

    3. **文件映射缓冲区**:对于大文件的处理,Java.nio提供了一个名为`MappedByteBuffer`的类,可以直接将文件映射到内存,避免了多次读写操作,极大地提高了效率。 4. **选择器(Selector)**:选择器允许程序同时...

    java_io.rar_java 文件操作_java 读取 本地文件_java.io转动_文件操作

    本资源“java_io.rar”提供了关于如何在Java中进行文件操作的示例代码,包括读取、移动、删除和复制文件等常见任务。我们将深入探讨这些主题,以便更好地理解Java I/O API的使用。 首先,让我们从读取本地文件开始...

    java.io包讲解

    Java.io包是Java编程语言中非常重要的一个标准库,它提供了丰富的类和接口,支持多种输入/输出流的处理方式,包括文件I/O、网络通信等场景。Java.io包的核心设计思想是以流(Stream)为基础,通过不同的流类型来处理...

    java.io.Serializable序列化问题

    实现 `Serializable` 接口后,可以通过 `java.io.ObjectOutputStream` 将对象写入文件或通过网络传输,也可以使用 `java.io.ObjectInputStream` 从文件读取对象或将对象从网络接收。 #### 三、序列化过程 序列化的...

    lumenworks.framework.io.Dll

    例如,通过使用LumenWorks.IO.Csv命名空间中的CsvReader类,开发者可以快速读取CSV文件,并将其转换为强类型的数据结构。 对于C++开发者,虽然C++本身不直接支持DLL,但可以使用DllImport特性来调用lumenworks....

    java.io的基础应用

    IO流的概念是Java.IO的核心,它将数据传输抽象为一系列连续的数据流,实现了数据的读写。 在Java中,IO操作主要分为字节流和字符流两大类,分别由`java.io.InputStream`和`java.io.OutputStream`以及`java.io....

    java.io包详细解说

    在Java IO包中,还有许多其他的类,如DataInputStream和DataOutputStream,它们用于读写基本数据类型;FileReader和FileWriter用于文件的字符读写;ObjectInputStream和ObjectOutputStream则支持序列化和反序列化...

    Java IO 基础操作(文件读写和移动)

    在Java编程语言中,输入/输出(IO)是处理数据传输的核心部分,特别是在与文件系统交互时。本文将深入探讨Java中的基本文件操作,包括文件的移动、读写以及文本文件的读写。 首先,让我们从文件操作开始。在Java中...

    org.apache.commons.io 的jar包大全

    9. **文件内容读写**:提供方便的方法来读取和写入文件内容,包括读取整个文件到字符串,或者写字符串到文件。 10. **临时文件和目录**:方便地创建临时文件和目录。 11. **对象序列化和反序列化**:简化了对象到...

    Java简单的文件IO程序

    在这个主题中,我们将深入探讨Java如何执行简单的文件读写和追加操作。 首先,Java中的文件IO操作主要依赖于`java.io`包中的类,如`File`、`FileReader`、`FileWriter`、`BufferedReader`和`BufferedWriter`等。在...

    java file,java读取txt文档

    在Java编程中,读取和操作TXT文档是常见的任务,特别是在处理日志、配置文件或者进行数据交换时。本文将详细讲解如何使用Java File类和相关的I/O流来实现这一功能。 首先,让我们理解`java file`的概念。在Java中,...

    org.apache.commons.io 包

    `org.apache.commons.io`是这个库的核心包,包含了许多与文件、流、过滤器、读写操作相关的类和工具。 1. **文件操作**: `FileUtils` 类提供了大量的静态方法,用于执行文件和目录的操作,如复制、移动、删除、创建...

    org.apache.commons.io.FileUtils

    这个类在Java开发中被广泛使用,尤其是在处理大量的文件读写和管理任务时。下面将详细介绍`FileUtils`类中的主要功能和知识点。 1. **读取文件** - `readFileToString(File file, Charset encoding)`: 这个方法...

    JBuider第八章:Java.io包.rar

    通过编写代码来读写文件、处理数据流以及实现对象序列化,可以更好地理解和掌握这些概念。这个教程中的习题将提供这样的实践机会,帮助你加深对Java I/O的理解。同时,鼓励大家共享资源,互相学习,共同进步。

    北大青鸟java.io经典例子

    北大青鸟的课程中,`java.io`的经典例子通常会涵盖基本的文件读写、流的使用、数据转换等关键概念。以下是基于这个主题的一些详细知识点: 1. **流的概念**: 流是数据的序列,可以代表输入或输出。Java中的I/O流...

    java.io的吐血实用例子

    在Java编程语言中,`java.io`包是用于输入/输出(I/O)操作的基础部分,包含了许多类和接口,使得开发者能够处理数据流、字符流、对象序列化、磁盘文件以及网络连接等任务。本篇文章将深入探讨`java.io`包中的关键概念...

    io读写.zip

    我们将主要探讨Java中的文件流读写技术,这是实现这个系统的关键部分。 首先,让我们了解一下Java中的I/O(输入/输出)系统。Java提供了丰富的API来处理各种类型的I/O操作,包括文件读写。核心的类位于`java.io`...

    java.io包中的File类.doc

    Java.io 包中的 File 类是 Java 语言中代表磁盘文件本身的对象,定义了一些与平台无关的方法来操纵文件。通过调用 File 类提供的各种方法,能够完成创建、删除文件,重命名文件,判断文件的读写权限及是否存在,设置...

Global site tag (gtag.js) - Google Analytics