字节流 文件流File...

字节流

字节流: 万能流
IO流中的核心

字节输入流:

InputStream
流向:输入流
操作单元:字节流
功能:节点流

此抽象类是表示字节输入流的所有类的超类 不能实例化
示例:

InputStream is = new FileInputStream(src);

FileInputStream(文件输入流)
是用来读文件数据的流,所以它需要一个文件对象用来实例化,这个文件可以是一个File对象,也可以是文件名路径字符串.【这里文件不存在会抛错】

从文件系统中的某个文件中获得输入字节
read() 每次从输入流中读入一个字节的内容,想要读入多个 手动一个字节一个字节读入
int read(byte[] b) 按字节数组依次读入

输出流

OutputStream
流向:输出流
操作单元:字节流
功能:节点流
此抽象类是表示字节输出流的所有类的超类 不能实例化

FileInputStream(文件输出流)
写文件数据的流

代码:

字节输入流 1

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

/**
* @author 黑羽-孤高之银风
* 第一个程序:理解操作步骤
* 文件字节输入流1
* 1.创建源
* 2.选择流
* 3.输入输出
* 4.关闭
* 
*/
public class IOTest01 {
	
	public static void main(String[] args) {
		//1.创建源
		File src = new File("abc.txt");
		//2.选择流
		try {
			InputStream is = new FileInputStream(src);
			//3.操作(读取)
			int data1 = is.read();//第一个数据h
			int data2 = is.read();//第二个数据e
			int data3 = is.read();//第三个数据l
			int data4 = is.read();//第四个数据 ???没有
			System.out.println((char)data1);//h
			System.out.println((char)data2);//e
			System.out.println((char)data3);//l
			System.out.println(data4);//返回-1
			//4.释放资源
			is.close();
		} catch (FileNotFoundException e)
		{
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

文件字节输入流2

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

/**
 * @author 黑羽-孤高之银风
 * 文件字节输入流2
 * 1.创建源
 * 2.选择流
 * 3.输入输出
 * 4.关闭 
 * 
 */
public class IOTest02 {

	public static void main(String[] args) {
		// 1.创建源
		File src = new File("abc.txt");
		// 2.选择流
		InputStream is = null;
		try {
			is = new FileInputStream(src);
			// 3.操作(读取)
			int temp;
			while ((temp = is.read()) != -1) {
				System.out.print((char) temp);// hel
			}

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// 4.释放资源
			try {
				if (is != null) {// 避免空指针异常
					is.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

}

文件字节输入流3

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

/**
 * @author 黑羽-孤高之银风
 * 
 * 			文件字节输入流3
 *          1.创建源 2.选择流 3.输入输出 4.关闭
 */

public class IOTest03 {
	public static void main(String[] args) {
		// 1.创建源
		File src = new File("abc.txt");
		// 2.选择流
		InputStream is = null;
		try {
			is = new FileInputStream(src);
			// 3.操作(分段读取)
			 修改内容
			byte[] flush = new byte[1024];// 缓冲容器
			int len = -1;// 接收长度
			while ((len = is.read(flush)) != -1) {
				// 字节数组字符串解码
				String str = new String(flush, 0, len);
				System.out.println(str);// hello world

			}

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			// 4.释放资源
			try {
				if (is != null) {// 避免空指针异常
					is.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

}

文件字节输出流

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

/**
* @author 黑羽-孤高之银风
* 	文件字节输出流
* 1.创建源
* 2.选择流
* 3.操作(写出内容)
* 4.释放资源
* 
* 
* 
*/
public class IOTest04 {
	public static void main(String[] args) {
		//1.创建源
		File src = new File("newdesk.txt");//没有则生成新文件 //input必须有
		//2.选择流
		OutputStream os = null;
		try {
			os = new FileOutputStream(src);//这里添加,true 可以 继续写在文件后面 不写则每次替换原文件
			//3.操作(写出)
			String msg = "hahahaha";
			byte[] datas = msg.getBytes();//字符串>>字节数组  编码
			os.write(datas, 0, datas.length);
			os.flush();//习惯性打
		} catch (Exception e) {
			
		}finally {
			//释放资源
				try {if (os!=null) {
					os.close();
				}
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		
			
			
		
		
		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值