欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

程序员文章站 2022-06-24 18:46:25
File类不能实现输入和输出Java.io包OutputStrea字节输出流Closeable(输出流关闭):Public interface Closeable extends Autocloseable{Void close() throws IoException;}Flushable(刷新):Public interface Flushable{ Public void flash() throws IoExcepti......

 

File类不能实现输入和输出

Java.io包

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

 OutputStrea字节输出流

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

Closeable(输出流关闭):


Public interface Closeable extends Autocloseable{
	Void close() throws IoException;
}

Flushable(刷新):

Public interface Flushable{

       Public void flash() throws IoException;

}

OutputStrea输出方法

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

3常用

因为最终都需要发生向上转移的处理关系,所以对于此时的FileOutputString子类核心在构造方法上

【覆盖】构造方法:public FileOutputStream(File file)throws FlieNotFoundException

【追加】构造方法:public FileOutputStream(File file,Boolean append)throws FileNotFoundException 

范例:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class outPut {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		File file=new File("D:/Stream/hello/test1.txt");//指定操作路径
		if(!file.getParentFile().exists()) {//文件不存在
			file.getParentFile().mkdirs();//创建父目录
		}
		OutputStream output=new FileOutputStream(file);//实例化
		String str="chesheosak";//输出内容
		output.write(str.getBytes());//将字符串变字节
		output.close();//关闭资源
	}

}

InputStream字节输入流

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

 

01

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

02

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

InputStream核心方法:

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

InputStream类属于抽象类,用子类来实例化对象,读取文件用FileInputStream子类

构造方法:

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

范例:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

public class INput {
	public static void main(String[] args) throws Exception {
		File file=new File("D:/Stream/hello/test1.txt");
		InputStream input=new FileInputStream(file);
		byte data[]=new byte[1024];//开辟一个缓冲区读取数据
		int len=input.read(data);//读取数据,数据全部保存在字节数组中,返回读取个数
		System.out.println(len);
		System.out.println(new String(data,0,len));
		input.close();
	}


}

以字节数组进行接收

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

不能读超过10k的文件·

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

Writer字符输出流

可追加输出内容

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

    }

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

Reader字符输入流

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

 

}文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

字节流与字符流区别:

在使用OutputStream类输出的时候如果没有使用close()方法关闭输出流,内容依然可以正常输出;

在使用Writer类输出的时候如果没有使用close()方法关闭输出流,内容无法正常输出,应为其使用了缓冲区,当使用close会强制刷新缓冲区,在不关闭的情况下可以使用flush()强制性刷新;

字节流处理是不会使用缓冲区,而字符流会使用到缓冲区,使用字符流缓冲区利于中文处理

转换流:

实现字符流与字节流转换

OutputStreamWriter:

定义:public class OutputStreamWriter extends Writer

构造方法:public OutputStreamWriter(OutputStream out)

InputStreamReader:

定义:public class InputStreamReader extends Reader

方法:public InputStreamReader (InputStream out)

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

综合案例:

文件拷贝处理:
Copy命令实现拷贝处理
 
拷贝原始实现:
 



import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

class FileUtil{
	private File srcfile;//源文件路径
	private File derfile;//目标文件路径
	public FileUtil(String src, String der) {
		this(new File(src),new File(der));
	}
	public FileUtil(File srcfile, File derfile) {
		// TODO Auto-generated constructor stub
		this.derfile=derfile;
		this.srcfile=srcfile;
	}
	public boolean copy() throws Exception {
		if(!srcfile.getParentFile().exists()) {
			System.out.println("源文件不存在");
			return false;
		}
		if(!derfile.getParentFile().exists()) {
			derfile.getParentFile().mkdirs();
		}
		byte data[]=new byte[1024];//开辟拷贝缓冲区
		InputStream input=null;
		OutputStream output=null;
		input=new FileInputStream(srcfile);
		output=new FileOutputStream(derfile);
		int len=0;
		while((len=input.read(data))!=-1) {
			output.write(data,0,len);
		}
		if(input!=null) {
			input.close();
		}
		if(output!=null) {
			output.close();
		}
		return true;
	}
}
public class copy {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		long start=System.currentTimeMillis();
		FileUtil fu=new FileUtil("D:/教学舆情报.doc", "D:/测试.doc");
		System.out.println(fu.copy()?"文件拷贝成功":"文件拷贝失败");
		long end=System.currentTimeMillis();
		System.out.println("拷贝完成时间:"+new SimpleDateFormat().format(end-start));
	}

使用转存方式处理(JDK 1.9以后):

 

文件输入输出流 OutputStrea字节输出流,InputStream字节输入流,Writer字符输出流,Reader字符输入流,转换流,拷贝原始实现详解

input.transferTo(output);

 

 

本文地址:https://blog.csdn.net/weixin_45829957/article/details/107592306

相关标签: java学习