package com.abby.example.NIO.IO;
import org.junit.Test;
import org.junit.experimental.theories.suppliers.TestedOn;
import java.io.*;
/**
* [byte]字节流操作IO类 buffer是字节数组byte[] 操作完一定要关闭
* 1.FileInputStream
* 2.FileOutputStream
*
* [char]字符流操作IO类 buffer是字符数组char[] 要flush操作,操作完一定要关闭,不然流还在buffer里面
* 3.FileReader
* 4.FileWriter
*
* @author abby
* @version 1.0
* @date 2019/4/3 9:16
* @description
*/
public class FourIO {
/**
* FileInputStreamTest 用于读取字节流,出现中文会有乱码
*/
@Test
public void fileInputStreamTest(){
FileInputStream fis = null;
try {
fis=new FileInputStream("G:\\IO\\fis.txt");
byte[] buffer=new byte[1024];
int len=0;
while ((len=fis.read(buffer)) > 0){
System.out.println(new String(buffer,0,len));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 2.fileOutputStream
*/
@Test
public void fileOutoutStream() throws IOException {
File file=new File("G:\\IO\\fis.txt");
FileInputStream fis=null;
FileOutputStream fos=null;
try {
fis=new FileInputStream(file);
fos=new FileOutputStream("G:\\IO\\fos.txt");
byte[] buffer=new byte[1024];
int len=0;
while((len=fis.read(buffer)) != -1){
fos.write(buffer,0,len);
}
System.out.println("write byte[] successed!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
fis.close();
fos.close();
}
}
/**
* 3. FileReader 字符流操作IO类,但当文件的编码方式不是UTF8等可中文编码的方式时,依旧会出现乱码
*/
@Test
public void fileReader() throws IOException {
FileReader fileReader=null;
try {
File file=new File("G:\\IO\\fileReader.txt");
fileReader=new FileReader("G:\\IO\\fileReader.txt");
System.out.println(fileReader.getEncoding()+"-----");
char[] cbuffer=new char[32];
int len=0;
while((len=fileReader.read(cbuffer)) != -1){
System.out.print(new String(cbuffer,0,len));
//System.out.print(cbuffer); //与上面效果一样
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
fileReader.close();
}
}
/**
* 4 FileWriter 写一次刷新一次flush
*/
@Test
public void fileWriter() throws IOException {
FileReader fileReader=null;
FileWriter fileWriter=null;
StringReader stringReader=new StringReader("长江大学");
StringWriter stringWriter=new StringWriter();
try {
fileReader=new FileReader("G:\\IO\\fileReader.txt");
fileWriter=new FileWriter("G:\\IO\\fileWriter.txt");
char[] cbuffer=new char[1024];
int len=0;
while ((len=fileReader.read(cbuffer)) != -1){
System.out.println("len:"+len+" cbuffer:"+cbuffer[0]);
fileWriter.write(cbuffer);
fileWriter.flush();
}
System.out.println("write cbuffer[] successed");
} catch (IOException e) {
e.printStackTrace();
}finally {
fileReader.close();
fileWriter.close();
}
}
@Test
public void StringIO() throws IOException {
StringReader stringReader=new StringReader("1234567");
StringWriter stringWriter=new StringWriter();
char[] cbuffer=new char[32];
stringReader.read(cbuffer);
int c=-1;
while ((c=stringReader.read()) != -1){
stringWriter.write("AB-"); //写入到StringWriter的StringBuffer中了,没有持久化到存储介质,获取的时候直接stringWriter.getBuffer()就可以获取数据
}
stringWriter.close();
System.out.println("stringWriter.getBuffer(): "+stringWriter.getBuffer().toString());
}
}
java的IO体系结构
最新推荐文章于 2022-03-21 12:22:43 发布