测试写入类
/**
* 测试结果
*
* 1.file's long:16kb
*
fileWrite's time----------36
outputStreamTest's time----------167
bufferedOutputTest's time----------17
bufferedWriteTest's time----------14
bufferedWrite And FileWriterTest's time----------9
bufferedWrite And BufferedOutputStreamTest's time----------12
*
* 2.file's long:1600kb
fileWrite's time----------69
outputStreamTest's time----------1282
bufferedOutputTest's time----------68
bufferedWriteTest's time----------40
bufferedWrite And FileWriterTest's time----------52
bufferedWrite And BufferedOutputStreamTest's time----------37
*
* 3.file's long:16000kb
fileWrite's time----------555
outputStreamTest's time----------12448
bufferedOutputTest's time----------599
bufferedWriteTest's time----------346
bufferedWrite And FileWriterTest's time----------316
bufferedWrite And BufferedOutputStreamTest's time----------358
4.file's long:160000kb
fileWrite's time----------5203
outputStreamTest's time----------127182
bufferedOutputTest's time----------5972
bufferedWriteTest's time----------3445 最优
bufferedWrite And FileWriterTest's time----------5904
bufferedWrite And BufferedOutputStreamTest's time----------5353
5.file's long:1600000kb
fileWrite's time----------50416
outputStreamTest's time----------1303242
bufferedOutputTest's time----------60931
bufferedWriteTest's time----------46697
bufferedWrite And FileWriterTest's time----------48710
bufferedWrite And BufferedOutputStreamTest's time----------64354
*/
public static void main(String[] args) {
String str = "abcdefghiJKLMN!";
int count = 1000000;
TestOutputStream t = new TestOutputStream();
long start = System.currentTimeMillis();
t.fileWriteTest(count, str);
long end = System.currentTimeMillis();
System.out.println("fileWrite's time---------" + (start - end));
start = System.currentTimeMillis();
t.outputStreamTest(count, str);
end = System.currentTimeMillis();
System.out.println("outputStreamTest's time---------" + (start - end));
start = System.currentTimeMillis();
t.bufferedOutputTest(count, str);
end = System.currentTimeMillis();
System.out
.println("bufferedOutputTest's time---------" + (start - end));
start = System.currentTimeMillis();
t.bufferedWriteTest(count, str);
end = System.currentTimeMillis();
System.out.println("bufferedWriteTest's time---------" + (start - end));
start = System.currentTimeMillis();
t.bufferedWriteAndFileWriterTest(count, str);
end = System.currentTimeMillis();
System.out.println("bufferedWrite And FileWriterTest's time---------" + (start - end));
start = System.currentTimeMillis();
t.bufferedWriteAndBufferedOutputStreamTest(count, str);
end = System.currentTimeMillis();
System.out.println("bufferedWrite And BufferedOutputStreamTest's time---------" + (start - end));
}
/**
*1 按字节写入 FileOutputStream
*
* @param count 写入循环次数
* @param str 写入字符串
*/
public void outputStreamTest(int count, String str) {
File f = new File("f:test1.txt");
OutputStream os = null;
try {
os = new FileOutputStream(f);
for (int i = 0; i < count; i++) {
os.write(str.getBytes());
}
os.flush();
System.out.println("file's long:" + f.length());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*2 按字节缓冲写入 BufferedOutputStream
*
* @param count 写入循环次数
* @param str 写入字符串
*/
public void bufferedOutputTest(int count, String str) {
File f = new File("f:test2.txt");
BufferedOutputStream bos = null;
try {
OutputStream os = new FileOutputStream(f);
bos = new BufferedOutputStream(os);
for (int i = 0; i < count; i++) {
bos.write(str.getBytes());
}
bos.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*3 按字符写入 FileWriter
*
* @param count 写入循环次数
* @param str 写入字符串
*/
public void fileWriteTest(int count, String str) {
File f = new File("f:test.txt");
Writer writer = null;
try {
writer = new FileWriter(f);
for (int i = 0; i < count; i++) {
writer.write(str);
}
writer.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
*4 按字符缓冲写入 BufferedWriter
*
* @param count 写入循环次数
* @param str 写入字符串
*/
public void bufferedWriteTest(int count, String str) {
File f = new File("f:test3.txt");
OutputStreamWriter writer = null;
BufferedWriter bw = null;
try {
OutputStream os = new FileOutputStream(f);
writer = new OutputStreamWriter(os);
bw = new BufferedWriter(writer);
for (int i = 0; i < count; i++) {
bw.write(str);
}
bw.flush();
if(f.exists()){
f.delete();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*5 按字符缓冲写入 BufferedWriter and BufferedOutputStream
*
* @param count 写入循环次数
* @param str 写入字符串
*/
public void bufferedWriteAndBufferedOutputStreamTest(int count, String str) {
File f = new File("f:test4.txt");
BufferedOutputStream bos=null;
OutputStreamWriter writer = null;
BufferedWriter bw = null;
try {
OutputStream os = new FileOutputStream(f);
bos=new BufferedOutputStream(os);
writer = new OutputStreamWriter(bos);
bw = new BufferedWriter(writer);
for (int i = 0; i < count; i++) {
bw.write(str);
}
bw.flush();
if(f.exists()){
f.delete();
System.out.println("delete---");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*6 按字符缓冲写入 BufferedWriter and FileWriter
*
* @param count 写入循环次数
* @param str 写入字符串
*/
public void bufferedWriteAndFileWriterTest(int count, String str) {
File f = new File("f:test5.txt");
FileWriter fw=null;
BufferedWriter bw = null;
try {
fw=new FileWriter(f);
bw = new BufferedWriter(fw);
for (int i = 0; i < count; i++) {
bw.write(str);
}
bw.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bw.close();
if(f.exists()){
f.delete();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
总结:
如果按字符和字节来分类,除方法1和2,其余都是按字符写入文件,字符写入一般比字节快;看java API可知,FileWriter的父类就是OutputStreamWriter,他俩都是实现Writer类,从这点上来说,方法4和6几乎没区别,时间有些微的差别,但内部机制是一样的,而且方法6较简单,定义变量稍,以前总用方法4,看来以后得改变下了。
分享到:
相关推荐
在Java编程语言中,读取文件是常见的任务之一,尤其对于处理文本文件,如TXT文件,以行为单位读取文件内容是一种效率较高且易于管理数据的方式。本篇将深入探讨如何使用Java进行逐行读取TXT文件,并提供相关示例代码...
它主要包括以下几种核心类: - `InputStream`/`OutputStream` - `Reader`/`Writer` 这些类提供了一系列用于读写文件、网络数据等的基础方法。在Java IO模型中,当一个线程发起一个IO操作请求时,该线程会一直阻塞...
标题中的"IO——test"显然指的是与输入/输出(Input/Output,简称IO)相关的测试。在计算机科学中,IO是程序与外部世界交互的重要方式,包括读取数据(输入)和写入数据(输出)。这可能是一个测试用例或者一个实验...
Java文件流 Java中的输入输出是以流(Stream)来方式来处理的,流是在计算机的输入、输出操作中流动的数据序列(从网上下载软件时能清晰地感受到)。在 Java 中,流是指一序列的数据元素,这些数据元素是从一个...
### Java学习IO流小结——字符流 #### 知识点概述 在Java中,处理文件和数据流是一项基本而重要的任务。IO流是Java语言中处理输入/输出的重要工具,它包括字节流和字符流两大类。本文将重点讨论字符流的相关概念...
4. Java的多线程机制:在文档内容中,提到了与线程相关的几个关键概念,如`Thread`、`Runnable`和`run()`方法。`Thread`是Java中表示线程的一个类,可以创建线程并执行线程。`Runnable`是一个接口,定义了一个`run()...
Java的`java.io`包提供了多种类来处理文件,如FileInputStream用于读取文件,BufferedInputStream可以提高读取效率。我们需要先打开文件,然后以字节流的形式读取内容,再将其写入Socket的输出流。 3. **TCP协议**...
Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...
描述中提到的几个主题——Java网络编程、多线程、IO(输入/输出)、注解和反射机制,都是Java开发者必须掌握的重要部分。 1. **Java网络编程**:Java提供了丰富的类库来支持网络编程,如Socket和ServerSocket类,...
Buffer 主要有以下几种操作: - **allocate()**:分配一个新的 Buffer。 - **put()**:将数据放入 Buffer。 - **flip()**:准备从 Buffer 读取数据。 - **get()**:从 Buffer 读取数据。 - **clear()** 或 **...
- **NIO (New IO)**:随着JDK 1.4的发布,Java引入了一种全新的IO处理方式——NIO,它提供了一系列新特性和改进,以提高IO效率。 NIO的关键特性包括但不限于: - **缓存(Buffer)支持**:为所有的原始类型提供缓存...
标题《Java串口通信代码》描述了文档所涉及的核心内容——Java编程语言在串口通信方面的应用。串口通信是一种计算机与外部设备通信的常见方式,尤其在工业自动化、数据采集、远程控制等领域有着广泛的应用。Java作为...
7. **文件存储与读取**:为了保存玩家的得分或者游戏进度,可以使用Java的`java.io`包进行文件操作,将数据写入文件并在游戏重启时读取。 8. **异常处理**:在编程过程中,异常处理是确保程序稳定运行的重要环节。...
Java的`java.io`包提供了文件读写功能,可以将分数、关卡进度等信息写入文件,下次游戏时再读取出来。 在项目“SuperMario”中,你可以找到这些知识点的具体实现。通过对源代码的阅读和学习,你将能够更深入地理解...
为此,从JDK 1.4开始,Java引入了一种新的IO操作模型——NIO(New IO),旨在提高程序处理大量并发连接的能力。NIO的主要特点在于它提供了一套基于缓冲区(buffer)且支持非阻塞(non-blocking)IO操作的API。 ####...
"文件"菜单中的"新建"操作可以创建一个新的文本文件,"打开"操作则使用FileStream或StreamReader读取已存在的文件内容,"保存"操作则使用FileStream或StreamWriter将编辑内容写入文件。注意,文件操作需要处理异常,...
在Java中进行文件操作主要包括文件的读取、写入、删除等。在提供的代码片段中,可以看到对文件读取的支持: ```java import java.io.BufferedReader; import java.io.FileReader; ``` 这意味着程序可能包含打开...
- **文件 I/O 流编程**:读取、写入文件及数据流处理。 - **网络编程**:实现网络通信功能,如 TCP/IP、UDP 协议的应用。 - **多线程编程**:利用 Java 多线程机制提高程序效率。 ### Java EE 基础 Java EE 技术栈...
在Java中处理文件输入输出时,为了按行读取或者写入文件,通常会选择使用特定的类来提高效率和便利性。题目提到的选项中,`BufferedReader` 和 `BufferedWriter` 是最适合这一目的的类。 **详细解释:** - **`...
这个名为"基于Java的实例源码-GIF动画制作工具 GiftedMotion.zip"的压缩包文件提供了一个使用Java编写的GIF动画制作工具——GiftedMotion的源代码。通过学习和理解这个工具的源码,开发者可以深入了解如何在Java环境...