filereadertest.java

来自「测试感兴趣的 java IO 读操作」· Java 代码 · 共 106 行

JAVA
106
字号
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;

import junit.framework.TestCase;

/**
 * 测试感兴趣的 java 读操作,看它们的性能如何
 *
 */
public class FileReaderTest extends TestCase {

	private String info = "<a>流程信息</a>";

	/**
	 * @param args
	 */
	public static void main(String[] args) {

	}

	/**
	 * 直接写文件,这依赖于系统的默认编码,可能出现乱码现象
	 *
	 * @throws Exception
	 */
	public void testFileReader() throws Exception {

	}

	/**
	 * 测试读 UTF-8 文件
	 *
	 * @throws IOException
	 */
	public void testUTF8Writer() throws IOException {
		Writer writer = new OutputStreamWriter(new FileOutputStream("/test.txt"), "UTF-8");
		writer.write(info);
		writer.close();
	}

	//测试读流
	public void testBufferedInputStream() throws Exception {
		long currentTime = System.currentTimeMillis();
		for (int i = 0; i < 1000; i++) {
			BufferedInputStream remoteBIS = new BufferedInputStream(new FileInputStream("/test.txt"));
			ByteArrayOutputStream baos = new ByteArrayOutputStream(10240);
			byte[] buf = new byte[1024];
			int bytesRead = 0;
			while (bytesRead >= 0) {
				baos.write(buf, 0, bytesRead);
				bytesRead = remoteBIS.read(buf);
			}
			remoteBIS.close();
			baos.close();
			String content = baos.toString("UTF-8");
		}
		System.out.println("执行 1000 次,耗时:" + Long.toString(System.currentTimeMillis() - currentTime) + " 毫秒");
	}

	//测试 BufferedReader
	public void testBufferedReader() throws Exception {
		long currentTime = System.currentTimeMillis();
		for (int i = 0; i < 1000; i++) {
			StringBuffer sb = new StringBuffer();
			BufferedReader in = new BufferedReader(new FileReader("/test.txt"));
			String s;
			while ((s = in.readLine()) != null) {
				sb.append(s);
				sb.append("\n");
			}
			in.close();
		}
		//String content = baos.toString("UTF-8");
		System.out.println("执行 1000 次,耗时:" + Long.toString(System.currentTimeMillis() - currentTime) + " 毫秒");
	}

	//测试 BufferedReader
	public void testInputStreamReader() throws Exception {
		long currentTime = System.currentTimeMillis();
		for (int i = 0; i < 1000; i++) {
			StringBuffer sb = new StringBuffer();
			/*此处读文件时用了buffer,如果不用,性能损失一倍*/
			BufferedReader in = new BufferedReader(
					new InputStreamReader(new FileInputStream("/test.txt"), "utf-8"));
			String s;
			while ((s = in.readLine()) != null) {
				sb.append(s);
				sb.append("\n");
			}
			in.close();
			String content = sb.toString();
		}
		//String content = baos.toString("UTF-8");
		System.out.println("执行 1000 次,耗时:" + Long.toString(System.currentTimeMillis() - currentTime) + " 毫秒");
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?