[每日一练] java 的输入输出流(一)

[每日一练] java 的输入输出流(一)

一、流的基本概念

数据流:一组有序的,有起点和终点的字节集合
1.输入流(InputStream)用于将程序中需要的数据从键盘或文件读入
2.输出流(outputStream) 用于将程序中产生的数据写入到文件中
3.缓冲流:就是为数据流配的一个缓冲区域,即专门用于传输数据的一块内存区域。
注意:(1)数据只能从头到尾顺序的读写一次
(2)流只能单方向流动

二、字节流

注意 :InputStream和outputStream是不能实例化的,平常我们所使用的都是他们的子类
(1)InputStream抽象类–此抽象类是表示字节输入流的所有类的超类/抽象类。
(2)FileInputStream子类–直接插在文件上,直接读取文件数据。

java 中对文件读取的操作:
(1)创建文件输入输出流对象
(2)打开文件
(3)用文件读写方法读写数据
(4)关闭数据流

1.创建文件字节流对象并打开文件
(1)创建FileInputStream对象,打开读取数据的文件
FileInputStream(File file)
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
FileInputStream(String pathname)
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。
eg:

FileInputStream rf= new FileInputStream("D:\\forjava");

(2)创建FileoutputStream对象,打开读取数据的文件

FileoutputStream(File file)
FileoutputStream(String pathname)

2.读写文件–利用继承的read()和write() 方法对打开的文件进行读写
(1) read()方法读取文件

public int read() throws IoException 

返回文件中读取的一个字节

 public int read(byte[] b]) throws IOException 
 public int read(byte[] b]  int start, int len) throws IOException 

读取数据到字节数组b 中 ,start表示数组中的起始位置, len 是读取的最大长度

(2)write()方法写入文件
public int write(int b) throws IOException
写入一个字节b

 public int write(byte[] b]) throws IOException 
 public int write(byte[] b]  int start, int len) throws IOException 

写入数据到字节数组b 中 ,start表示数组中的起始位置, len 是读取的最大长度

注:输入流结束时,返回-1

3.关闭数据流
当读写操作完毕,关闭输入输出流,释放相关的系统资源

 public void close() throws IOException 

eg:将磁盘文件1复制到磁盘文件2

package io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test2 {
	public static void main(String[] args) {
		try {
			//创建输入流文件,打开源文件
			FileInputStream rf = new FileInputStream("E:\\dat");
			//创建输出流文件,打开目标文件
			FileOutputStream wf= new FileOutputStream("E:\\dat2");	
			byte b[] = new byte[512];
			//从源文件 0开始最多读取512个字节到数组b 中
			while((rf.read(b,0,512)) != -1 );
			
			wf.write(b);//写入目标文件
			rf.close();//关闭输入文件
			wf.close();//关闭输出文件
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("创建输入流文件失败");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("读写出错");
		}
	}
}

注意: 如果打开的文件没有找到,抛出FileNotFoundException;
如果读取的数据为空,抛出 NullPointerException

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值