JavaSE学习笔记-Day18~19

£可爱£侵袭症+ 提交于 2020-02-20 04:45:39

学校的网课陆陆续续在准备阶段了,所以自己的学习就得先放在一边,学有余力的时候才能宠幸一下,唉,太快了…

这两天学完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);
	}
	
}

在这里插入图片描述
在这里插入图片描述

感觉这一开课就有点厌倦了,心态啊我的心态

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!