Java学习—IO流

IO流

1 概述

IO流的作用是实现两个设备之间数据的传递,设备包括磁盘(硬盘)、内存、键盘、文件、网络和控制台,其中网络表示当前主机之外的网上资源

2 分类

IO流根据操作的方式可以分为输入流和输出流,根据数据的类型可以分为字节流和字符流

2.1 字节流

1 概述

字节流传输的是字节,可以操作任意类型的数据,如音频、视频、文件、图片等

2 InputStream、OutputStream

2.2 字符流

1 概述

字符流传输的是字节,不同点是在传输过程中加入了编码的操作,可以更方便的操作文本

2 Reader、Writer

3 FileWriter

3.1 FileWriter练习
package hope;

import java.io.*;

public class _FileWriter {
	public static void main(String args[]) throws IOException {
		//1. 创建FileWriter对象并关联相应文件
		FileWriter fileWriter = new FileWriter("test1.txt");
		
		//2. 写
		fileWriter.write("Hello World! Hello Hope!");
		
		//3. 刷新
		fileWriter.flush();
		
		//4. 关闭流(关闭&刷新)
		fileWriter.close();
	}
}

注意点:
(1)创建对象时,如果只写了文件的名字,没有写具体路径,则默认路径时当前的工程
(2)创建对象时,如果关联的文件已经存在,则覆盖掉源文件,如果不存在,则程序会自动创建要给新的
(3)创建对象时,如果指定的路径并不是真实存在的,则会报异常(FileNotFoundException),表示系统找不到指定路径
(4)执行write方法时,数据临时存放到流对象的内部字节数组中,会默认去查编码表
(5)刷新时,会将临时字节数组中的数据放入磁盘
(6)关闭流时,不仅关闭流,并且会进行刷新操作
(7)如果关闭流之后,在进行写操作,会报异常(Stream closed)

3.2 FileWriter-文件续写
package hope;

import java.io.*;

/**
 * 
 * 文件的读写:FiileWriter(String file, boolean value)
 *当value位是true时,表示不会将原来的内容覆盖掉,会接着写
 */

public class _FileWriter_02 {
	public static void main(String args[]) throws IOException{
		//1. 创建
		FileWriter fileWriter = new FileWriter("test1.txt", true);
		
		//2. 写
		fileWriter.write("Hello World!\n");
		
		//3. 刷新
		fileWriter.flush();
		
		//4. 关闭
		fileWriter.close();
	}
}

4 FileReader

4.1 FileReader练习—从文件中读取数据,打印到控制台
package _FileReader;

import java.io.*;

/**
 * 
 * 读内容-FileReader
 * 实例:从文件中读取内容并显示在控制台
 *
 */

public class _FileReader_01 {
	public static void main(String args[]) {
		test01("test1.txt");
		test02("test1.txt");
	}
	//read();//一个字符一个字符的读,每次输出一个字符
	public static void test01(String path) {
		try {
			FileReader fileReader = new FileReader(path);
			
			int num = 0;
			//num = fileReader.read();//返回的是ASCII码值
			while((num = fileReader.read()) != -1) {
				System.out.print((char)num);
			}
			
			fileReader.close();
		}
		catch(IOException e) {
			e.printStackTrace();
		}
	}
	//read(数组);//每次读出多个字符(剩余数组长度 == 数组长度? “数组长度”:“剩余数组长度”)
	//数组负责临时存放数据,一般这个数组的大小<=!kB
	//返回值表示本次读到的真实字符个数,如果返回值是-1,则表示已读完
	public static void test02(String path) {
		try {
			FileReader fileReader = new FileReader(path);
			
			char[] arr = new char[4];
			int num = 0;
			while((num = fileReader.read(arr)) != -1) {
				//System.out.println(new String(arr, 0, num) + " " + num);
				System.out.print(new String(arr, 0, num));
			}
			
			fileReader.close();
		}
		catch(IOException e) {
			e.printStackTrace();
		}
	}
}

上一篇:IO流


下一篇:FileReader