学校的网课陆陆续续在准备阶段了,所以自己的学习就得先放在一边,学有余力的时候才能宠幸一下,唉,太快了…
这两天学完IO流的相关类。
InputStream/OutputStream(字节流)和Reader/writer(字符流)类是所有IO流类的抽象父类,我们有必要简单了解一下。
一. InputStream和FileInputStream
InputSteam是一个抽象类,它不可以实例化,它是表示字节输入流的所有类的超类。 继承自InputSteam的流都是用于向程序中输入数据(读),且数据的单位为字节(英文Byte,简写为B)。
常用方法:
FileInputStream通过字节的方式读取文件,适合读取所有类型的文件(图像、视频、文本文件等)。FileInputStream的常用方法和InputStream中一模一样,具体实现代码就不了解了,水平不够。
测试一下:
package cn.zjb.test;
import java.io.FileInputStream;
import java.io.IOException;
/**
* 测试文件输入字节流
* @author张坚波
*
*/
public class TestInputStream {
private static FileInputStream in;
private static final int DEFAULT_CAPACITY=1024;
private static void printContent1(String src) throws IOException {
/*
* 已知文件中的字节大小
*/
in=new FileInputStream(src);
for(int i=0;i<10;i++)
System.out.print(in.read()+" ");
System.out.println();
in.close(); //没关闭可能会出错的,一定要关闭相应流
}
private static void printContent2(String src) throws IOException{
/*
* 不管知不知道文件中的字节数
*/
in=new FileInputStream(src);
int temp;
while((temp=in.read())!=-1)
System.out.print(temp+" ");
System.out.println();
in.close();
}
private static void printContent3(String src) throws IOException {
in=new FileInputStream(src);
byte[] buffer=new byte[DEFAULT_CAPACITY];
in.read(buffer);
for(int i=0;buffer[i]!=0;i++)
System.out.print(buffer[i]+" ");
System.out.println();
in.close();
}
private static void printContent4(String src) throws IOException {
in=new FileInputStream(src);
byte[] buffer=new byte[DEFAULT_CAPACITY];
/*
in.read(buffer,2,5);
for(int i=0;buffer[i]!=0;i++)
System.out.print(buffer[i]+" "); //无输出结果
for(int i=0;i<DEFAULT_CAPACITY;i++)
System.out.print(buffer[i]+" "); //运行结果:0 0 72 101 108 108 111 0 0 0 0 ···
*/
in.read(buffer,0,2);
for(int i=0;buffer[i]!=0;i++)
System.out.print(buffer[i]+" ");
System.out.println();
in.close();
}
public static void main(String[] args) throws IOException {
printContent1("D:\\a.txt"); //a.txt文件的内容是:Hello Java
printContent2("D:\\a.txt");
printContent3("D:\\a.txt");
printContent4("D:\\a.txt");
}
}
二. OutputStream 和 FileOutputStream
OutputStream是一个抽象类,它是表示字节输出流的所有类的父类。输出流接收输出字节(写)并将这些字节发送到某个目的地。
常用方法:
FileOutputStream 通过字节的方式写数据到文件中,适合所有类型的文件。
构造方法:
FileOutputStream的常用方法和OutputStream中的常用方法也是一致的。
测试一下:
package cn.zjb.test;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 测试字节输出流的应用
* @author 张坚波
*
*/
public class TestOutputStream {
private static FileOutputStream out;
private static final String src="D:\\a.txt";
private static final byte[] buffer= {104,97,110,103}; // hang
private static void writeInTxt1(String src) throws IOException {
out=new FileOutputStream(src);
out.write(122); //'z'
out.close();
}
private static void writeInTxt2(String src) throws IOException {
out=new FileOutputStream(src,true); //在源文件最后追加
out.write(buffer);
out.close();
}
public static void main(String[] args) throws IOException {
writeInTxt1(src); //先运行
writeInTxt2(src);
}
}
}
三. Reader 和 FileReader
Reader是一个抽象类,用于读取的字符流抽象类,数据单位为字符。在Unicode中,一个字符等于两字节,也就是十六位二进制数。
常用方法:
FileReader的常用方法和FileReader中的一样,测试一下:
package cn.zjb.test;
import java.io.FileReader;
import java.io.IOException;
/**
* 测试字符输入流
* @author 张坚波
*
*/
public class TestFileReader {
private static FileReader read;
private static final String src="D:\\a.txt"; //zhang
private static void readFile(String src) throws IOException {
read=new FileReader(src);
System.out.println(read.read());
read.close();
}
public static void main(String[] args) throws IOException {
readFile(src); //122
}
}
四. Writer 和 FileWriter
Writer是一个抽象类,用于写入的字符流抽象类,数据单位为字符。
常用方法:
FileWriter的构造方法:
FileWriter的常用方法和FileWriter中的一样,测试一下:
package cn.zjb.test;
import java.io.FileWriter;
import java.io.IOException;
/**
* 测试字符输出流
* @author 张坚波
*
*/
public class TestFileWriter {
private static FileWriter fw;
private static final String src="D:\\a.txt";
private static final char[] buffer= {122,104,97,110,103,0x5f20}; //zhang张
private static void writeFile1(String src) throws IOException {
fw=new FileWriter(src); //覆盖
fw.write(122);
fw.close();
}
private static void writeFile2(String src) throws IOException {
fw=new FileWriter(src,true); //添加
fw.write(buffer);
fw.close();
}
public static void main(String[] args) throws IOException {
writeFile1(src); //先运行
writeFile2(src);
}
}
感觉这一开课就有点厌倦了,心态啊我的心态
来源:CSDN
作者:咱能给力点吗
链接:https://blog.csdn.net/weixin_44170240/article/details/104372978