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

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.OptionalDataException(解决方案).md

    在Java的I/O操作中,`java.io.OptionalDataException`是一个不常被提及但可能遇到的异常。当应用程序在执行对象输入操作时,期望读取到对象数组,但实际读取到的却是基本数据类型的数组时,就会抛出这个异常。此外,...

    java.io.UncheckedIOException(解决方案).md

    在代码处理上,当调用Java IO类库的方法时,例如使用BufferedReader读取文件内容,一旦发生异常,我们可以捕获IOException并抛出一个UncheckedIOException,如代码示例所示。这样做的好处是可以在调用层次上透明地...

    java.io.UTFDataFormatException(解决方案).md

    需要注意的是,即使在示例中已经使用了UTF-8编码,但在实际项目开发过程中,还需要考虑其他可能的异常情况,比如文件不存在、没有读写权限等。因此,实际的代码实现还需要包含对这些异常情况的处理逻辑,以便程序...

    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中...

    java.io.WriteAbortedException(解决方案).md

    在Java中,`java.io.WriteAbortedException`是一个I/O异常,它通常发生在多线程环境中,当一个线程试图写入一个正在被另一个线程读取的文件时可能会抛出这个异常。这种情况可能是由于线程在执行写操作时被中断或其他...

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

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

    Java简单的文件IO程序

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

    用java修改文件的编码

    3. **BufferedReader和BufferedWriter**:在Java中,`java.io.BufferedReader`和`java.io.BufferedWriter`类用于读写文件。这两个类允许我们指定文件的字符编码,通过构造函数传入`Charset`对象。 4. **文件读写...

    java.io.IOException(解决方案).md

    java.io.IOException是Java编程语言中,由java.io包抛出的一种异常,它主要由I/O操作导致,例如文件读写、网络通信等。该异常是一个检查型异常,这意味着编译器要求在可能抛出这种异常的代码路径上必须进行异常处理...

    java.io.EOFException(解决方案).md

    示例代码中提供了一个处理文件读取时可能遇到的`java.io.EOFException`异常的实例。在这个例子中,我们创建了`BufferedReader`来逐行读取文件,循环继续直到`readLine()`返回`null`,这表示文件已经读取完毕。使用...

    java file,java读取txt文档

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

Global site tag (gtag.js) - Google Analytics