Java学习篇之IO流(字节流)

字节流

  在前面的博文中,有File类的介绍和方法总结,一直都是在操作文件或者文件夹,并没有针对文件中进行任何数据操作,接下来的文章中,就要开始往文件中写数据,或者读取文件中的数据,本文先总结字节流的读写操作。

字节输入流InputStream

  InputStream表示字节输入流的所有类的超类,定义了字节输入流的基本共性功能方法。
  

读方法

  int read():读取一个字节并返回,没有字节返回-1
  int read(byte[]  b): 读取一定量的字节数,并存储到字节数组中,返回读取到的字节数。

子类FileInputStream的构造方法

  FileInputStream(File file)
  FileInputStream(String name)
  构造方法的作用是:为这个流对象绑定数据源

实例

  读取一个字节


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


public class FileInputStreamDemo {
	public static void main(String[] args) throws IOException {
		File file = new File("D:\\file.txt");
		//创建一个字节输入流对象,必须明确数据源,其实就是创建字节读取流和数据源相关联。
		FileInputStream fis = new FileInputStream(file);
		//读取数据。使用 read();一次读一个字节。
		int ch = 0;
		while((ch=fis.read())!=-1){
			System.out.println("ch="+(char)ch);
		}
		// 关闭资源。
		fis.close();
	}
}



  读取多个字节

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamDemo2 {
	public static void main(String[] args) throws IOException {
		/*
		 *  数组作用: 缓冲的作用, 提高效率
		 */
		File file = new File("D:\\file.txt");
		// 创建一个字节输入流对象,必须明确数据源,其实就是创建字节读取流和数据源相关联
		FileInputStream fis = new FileInputStream(file);		
		//创建一个字节数组
		//长度可以定义成1024的整数倍	
		byte[] b = new byte[1024];	
		int len = 0;
		// read返回的len,表示读取到多少个有效的字节数
		while((len=fis.read(b))!=-1){
			System.out.println(new String(b,0,len));
		}
		fis.close();
	}
}

字节输出流OutputStream


  OutputStream表示输出字节流的所有类的超类,操作的数据都是字节,这样流每次只操作文件中的1个字节,它定义了输出字节流的基本共性功能方法,有很多子类,其中子类FileOutputStream(即文件输出流)可用来写入数据到文件。 


写方法

  write(int  b) 写入1个字节
  write(byte[]  b) 写入字节数组
  write(byte[]  b,int  off,int  len)写入字节数组,off 开始写入的索引, len 写几个

子类FileOutputStream的构造方法

  FileOutputStream(File file)
  FileOutputStream(String name)
  构造方法的作用是:绑定输出流的输出目的

实例


public class FileOutputStreamDemo {
	public static void main(String[] args) throws IOException {
		//需求:将数据写入到文件中。
		//创建存储数据的文件。
		File file = new File("D:\\file.txt");
		//创建一个用于操作文件的字节输出流对象。一创建就必须明确数据存储目的地。
		//输出流目的是文件,会自动创建。如果文件存在,则覆盖。
		FileOutputStream fos = new FileOutputStream(file);
		//调用父类中的write方法。
		byte[] data = "abcde".getBytes();
		fos.write(data);
		//关闭流资源。
		fos.close();
	}
}




你可能感兴趣的:(●,编程语言,———【Java】)