Java高级输入输出流

流的概念:

  • 流(Stream )的概念代表的是程序中数据的流通
  • 数据流是一串连续不断的数据的集合
  • 在Java程序中,对于数据的输入/输出操作是以流(Stream)的方式 进行的
       输入流 — 流入程序的数据
       输出流 — 流出程序的数据
       在java程序中,从输入流读取数据(读到内存中),而从输出 流输出数据(从内存存储到文件或显示到屏幕上)
    在这里插入图片描述

流的分类

在这里插入图片描述

字节流输入流,InputStream常用的方法

方法含义
int read( )一次读取一个byte的数据,并以int类型把数据返 回来,如果没有数据可以读了,会返回”-1”
int read(byte[] buffer)把所读取到的数据放在这个byte数组中,返回一 个int型的数据,这个int型数据存储了返回的真正读取到的数据byte数
int read(byte[] buffer,int offset,int length)读取length个字节,并存储到一个字节数组buffer 中,并从offset位置开始返回实际读取的字节数 void close( ) 关闭此输入流并释放与该流关联的所有系统资源
void close( )关闭此Reader并释放与其关联的所有系统资源

字节流输出流,OutputStream常用的方法

方法含义
void write(byte[] buffer)=将要输出的数组先放在一个byte数组中,然后用 这个方法一次把一组数据输出出去
void write(byte[] buffer,int off,int len)将指定字节数组中从偏移量 off 开始的 len 个字节 写入此输出流
abstract void write(int b)将指定的字节写入此输出流
void close( )
void flush( )刷新此输出流并强制写出所有缓冲的输出字节

字符输入流,Reader常用的方法

方法含义
int read( )一次读取一个char的数据,并以int类型把数据返 回来,如果没有数据可以读了,会返回”-1”
int read(char[] cbuffer)
int read(char[] cbuffer,int offset,int length)读取length个字符,并存储到一个字节数组 cbuffer中,并从offset位置开始返回实际读取的 字符数
void close( )关闭此Reader并释放与其关联的所有系统资源

字符输出流,Writer常用的方法

方法含义
void write(char[] cbuffer)将要输出的数组先放在一个char数组中,然后用这 个方法一次把一组数据输出出去
void write(char[] cbuffer,int off,int len)将指定字符数组中从偏移量 off 开始的 len 个字符 写入此输出流
int write(int b)将指定的字符写入此输出流
void write(String str)写入字符串
void write(String str, int off,int len)将指定字符串中从偏移量 off 开始的 len 个字符写 入此输出流
void close( )关闭此输出流并释放与此流有关的所有系统资源 void flush( ) 刷新此输出流并强制写出所有缓冲的输出字符

字节输入流Demo

package com.neuedu.chapter03._文件管理Java7特性;

import java.io.FileInputStream;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;

public class FileOutputStream_FileInputSteream_Demo {
	public static void main(String[] args) {
		FileInputStream input = null;
		FileOutputStream output = null;
		try {
			//读取文件,字节输入流
			input = new FileInputStream("file/file1.txt"); //工程目录下的文件夹下文件
			//输出文件,字节输出流
			output = new FileOutputStream("file/file_back.txt"); 
			
			byte[] b = new byte[6];
			int length = -1;
			//循环读取,并将每次读取到的内容写到指定文件,读一次写一次
			while((length=input.read(b)) != -1) {
				//输出到控制台
				System.out.println(length+"------"+Arrays.toString(b));
				//将文件的内容复制到file_back.txt文件中
				output.write(b,0,length);
				output.flush();  //强制刷新暂存区,保证暂存区中所有的内容一定写入文件中
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally{
			
		}
	}
}

字符输入流Dem

package com.neuedu.chapter03._文件管理Java7特性;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;

public class FileReader_FileWriter_Demo {
	public static void main(String[] args) {
		FileReader reader = null;  
		FileWriter writer = null;
		try {
			reader = new FileReader("file/file1.txt");
			writer = new FileWriter("file/file_back.txt");
			
			
			int cotent = reader.read();
			System.out.println(cotent);
			
			cotent = reader.read();
			System.out.println(cotent);
			
			cotent = reader.read();
			System.out.println(cotent);
			
			cotent = reader.read();
			System.out.println(cotent);
			
			char[] c = new char[5];  //创建一个长度为5字符数组
			int content;
			while((content = reader.read(c))!=-1) { 
				/*
				  reader.read(c)	一次从reader读取长度为5的字符,返回字符数组的实际长度
				  						假如reader的长度为11,那么最后一次的content的值为1
				 */				
				System.out.println(content+"--------"+Arrays.toString(c));  //读取文件
				
				
				writer.write(c,0,content); //写入文件
			}
			writer.flush();//强制刷新
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			try {
				if(reader != null) {
					reader.close(); //关闭文件
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				if(writer != null) {
					writer.close(); //关闭文件
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code_mo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值