java14 IO流缓冲区 input output

package com.java14.myjava;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

import org.junit.Test;

public class TestFileStream {
// 字节流 处理图片 InputStream outputStream
// 字符流 处理文本 Reader Writer
@Test
public void testcopyFile() throws Exception {
FileInputStream fis = new FileInputStream("D:\java\JPG\tree.jpg");
FileOutputStream fos = new FileOutputStream("D:\java\JPG\2.jpg");
byte[] Buffer = new byte[1024];
int len = 0;
// 只要不是-1就一直循环
while ((len = fis.read(Buffer)) != -1) {
// 有多少写多少
fos.write(Buffer, 0, len);
}
fis.close();
fos.close();
System.out.println("复制完毕");
}

/**
*
* 测试复杂文件
*/
@Test
public void TestfuzaFile() throws Exception {
FileInputStream fis1 = new FileInputStream("D:\java\JPG\text.txt");

// 读取一次读满到缓冲
// byte[] buffer2 =new byte[fis1.available()];
// fis1.read(buffer2);
// fis1.close();
// System.out.println(new String(buffer2,"utf-8"));

byte[] buffer = new byte[12];
int len1 = 0;
while ((len1 = fis1.read(buffer)) != -1) {
// 以不同的格式的编码读出来
System.out.println(new String(buffer, 0, len1, "utf-8"));
}
fis1.close();
}

/**
* 读取字符流
*/
@Test
public void TestFileReader() throws Exception {
FileReader reader = new FileReader("D:\java\JPG\text.txt");
char[] buf = new char[1024];
int len = 0;
while ((len = reader.read(buf)) != -1) {
System.out.println(new String(buf));
}
reader.read(buf);
reader.close();
}

/**
* 将字节流转换为字符流
*
*/

@Test
public void TestzhuanhuanFile() throws Exception {
FileInputStream fistest = new FileInputStream("D:\java\JPG\text.txt");
InputStreamReader sir = new InputStreamReader(fistest, "utf-8");
char[] buffer = new char[12];
int len1 = 0;
while ((len1 = sir.read(buffer)) != -1) {
// 以不同的格式的编码读出来
System.out.println(new String(buffer, 0, len1));
}
sir.close();
}

/**
* 标准流的操作
*/

public void StandFile() throws Exception {
FileReader reder = null;
try {
reder = new FileReader("D:\java\JPG\text.txt");
char[] buf = new char[1204];
int len = 0;
while ((len = reder.read(buf)) != -1) {
System.out.print(new String(buf, 0, len));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (reder != null) {
reder.close();
}
}
}

/**
* 字符流的输出 写入一个文件
*/
@Test
public void testFileWriter() {
FileWriter fil = null;
try {
//false替换 true 追加
fil = new FileWriter("D:\java\JPG\test.txt", true);
for (int i = 0; i < 100; i++) {
fil.write("Tom" + i + ";");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fil != null) {
try {
//如果不close不清理缓冲区 进不到方法里面
fil.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

}

/**
* 测试字符缓冲区输入流 讀取行
*/
@Test
public void testBufferStream() throws Exception {
FileReader reader= new FileReader("D:\java\JPG\text2.txt");
BufferedReader br = new BufferedReader(reader);
// 读取行 读到末尾返回空
String line =null;
while ((line=br.readLine())!=null){
System.out.println(line);
}
br.close();
}


/**
* 测试不同缓冲区大小的性能
*/
@Test
public void testFileXingneng() throws Exception{
FileReader reader=null;
BufferedReader br=null;
for(int size =1024;size <1024 * 1024 *10;size=size * 2){
br=new BufferedReader(new FileReader("D:\java\JPG\text2.txt"),size);
long start=System.currentTimeMillis();
while(br.readLine()!=null){
System.out.println((size / 1024)+"K:"+ (System.currentTimeMillis()-start));
}
reader.close();
}
}


/**
* 测试skip功能
* @throws Exception
*/

@Test
public void testFileguidang() throws Exception{
FileInputStream br = new FileInputStream("D:\java\JPG\text2.txt");
System.out.println((char)br.read());
br.skip(-1);
System.out.println((char)br.read());
System.out.println((char)br.read());
br.close();

}
}

原文地址:https://www.cnblogs.com/simly/p/11049739.html