JavaIO流之字节流

版权声明:LemonSnm https://blog.csdn.net/LemonSnm/article/details/89790575

 1.IO流概述

输入输出流(Input/Output)

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在俩设备间的传输为流。

流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

IO流的分类

根据处理数据类型的不同分为:字符流和字节流

根据数据流向不同分为:输入流和输出流(以程序为参考)

2.字节输出流

OutputStream 此抽象类是表示输出字节流的所有类的超类。

输出流接受输出字节并将这些文字发送到InputStream类某个接收器

要向文件中输出,使用FileOutputStream类

注意:

 OutputStream out = new FileOutputStream(file); 默认输出覆盖

扫描二维码关注公众号,回复: 6144614 查看本文章

 OutputStream out = new FileOutputStream(file,true); //加个产生true  为输出追加 

输出的内容
            String info = "这是输出流内容!\r\n";        //\r\n表示换行 

//            String line = System.getProperty("line.separator");//换行符
//            String info = "这是输出流内容!" + line;//

  * 输入输出字节流操作原理: 每次自会操作一个字节(从文件中读取或者写入)
  * 字节操作流,in.read(bytes)默认每次执行写入操作,会直接把数据写入文件

package com.lemon;

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

/**
  * 字节输入输出流
  * 输出流:超类OutputStream 对文件输出流使用子类 FileOutputStream
  * 输入流:超类InputStream 对文件的输入流使用子类FileInputStream

 * @author lemonSun
 *
 * 2019年5月3日下午7:58:31
 */
public class ByteStreamDemo {

	
	public static void main(String[] args) {
		out();
	}
	
	private static void out() {
		//1、确认目标文件
		File file = new File("F:\\javatest\\lemon1.txt");
		
		try {
			OutputStream out = new FileOutputStream(file);
			//2、输出的内容
			String info = "这里是输出流内容!";
			//3、把内容写到文件
			out.write(info.getBytes());
			System.out.println("写入成功!");
			//4、关闭流
			out.close();
			
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		
	}

}

3.字节输入流 

InputStream 此抽象类是表示字节输入流的所有类的超类。

FileInputStream从文件系统中的某个文件中获得输入字节 

注意:

 sb.append(new String(bytes,0,len));  //一定带0,len,否则有可能读入多了

原因:byte[] bytes = new  byte[14]; //每次读取字节大小

每次到数组中都覆盖上次读入到数组中的内容,不带从0开始,读的长度为len,可能最后数组没被覆盖的内容也被写出

public static void main(String[] args) {
		//out(); //输出流 往文件中写
		in();    //输入流 读取文件的内容
	}
	
	
	//文件输入流
	private static void in() {
		//1、确认目标文件
		File file = new File("F:\\javatest\\lemon1.txt");
		
		try {
			InputStream in = new FileInputStream(file);
			
			byte[] bytes = new  byte[1024]; //每次读取字节大小
			StringBuilder sb = new StringBuilder(); //存放读入的内容
			int len = -1; //表示读取的字节长度
			//2、把数据读入到数组中,并返回读取的字节数,当不等于-1时,表示读到数据。为1则读取完了
			while((len = in.read(bytes))!= -1){
				 //根据读取到的字节数组,再转换为字符串
				sb.append(new String(bytes));
			}
            //打印内容
            System.out.println(sb);
			//关闭输入流
			in.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}	
	}

猜你喜欢

转载自blog.csdn.net/LemonSnm/article/details/89790575