IO流基础学习笔记(一)

时间:2023-02-24 19:03:22

1、IO概述

IOInput/Output:输入和输出,指的是某个设备或环境进行数据的输入或者输出。例如:键盘的输入,再比如显示器就是输出设备,输出图像。

对于java来说输入输出问题,java将它抽象成流对象来解决。

以游戏程序为中心读取文件就是输入,写入文件是输出。

IO流基础学习笔记(一)

IO流在java中从输入输出角度分类:

  1.输入流

  2.输出流

IO流在java中从数据的角度来分类:

  1.字符流

  文本,我们能读的懂的都可以认为是字符流。比如:文章,java文件等等

  2.字节流

  二进制的数据,这种数据一般用文本打开我们读不懂。比如,图片文件,mp3文件,等等。

1).字符流

  文本,我们能读的懂的都可以认为是字符流。比如:文章,java文件等等

  字符输入流的超类:

Reader: 子类FileReaderBufferedReader

  字符输出流的超类

  Writer:子类FileWriterBufferedWriter

2).字节流

  二进制的数据,这种数据一般用文本打开我们读不懂。比如,图片文件,mp3文件。

字节输入流的超类:

  InputStream: 子类FileInputStream

  字节输出流的超类

  OutputStream:子类FileOutputStream

2、字符输出流

使用字符流向一个文件输入helloworld

分析:

步骤      1.创建文件

    2.创建输出流对象

    3.把流指向指定的文件

    4.释放资源

package com.rl.io;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
/**
 * 使用字符流向一个文件中输入helloworld
 */
public class IOchaDemo {
	public static void main(String[] args) {
		writerFile1();
		
		
	}
	
public static void writerFile(){
	//创建文件
			File file = new File("a.txt");
			//创建输出流对象,IO流都会出现异常,需要用try-catch处理
			FileWriter fw = null;
			try {
				//创建输出流对象
				fw = new FileWriter(file);
				//把内容写入文件
				fw.write("helloworld");
				//字符流的特点:清空缓冲区,把内容写入到文件中
				fw.flush();
				
			} catch (IOException e) {
			
				e.printStackTrace();
			}finally{
				if(fw != null){
					try {
						//close关闭输出流时会先清理缓冲区
						fw.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
					
				}
				
			}
			
			
			
		
	}

public static void writerFile1(){
			FileWriter fw = null;
			try {
				//创建输出流对象
				fw = new FileWriter("b.txt");
				//把内容写入文件
				fw.write("helloworld");
				//字符流的特点:清空缓冲区,把内容写入到文件中
				fw.flush();
				
			} catch (IOException e) {
			
				e.printStackTrace();
			}finally{
				if(fw != null){
					try {
						//close关闭输出流时会先清理缓冲区
						fw.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
					
				}
				
			}
			
			
			
		
	}
}

3、输出字符流的FileWriter的普通构造器

IO流基础学习笔记(一)

4、向文件中输出100个hellowoeld

package com.rl.io;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
/**
 * 向一个文件中输出100个helloworld
 */
public class IOCharDemo1 {
	public static void main(String[] args) {
		writerFile1();
		
		
	}
	


public static void writerFile1(){
	FileWriter fw = null;
	try {
		//创建输出流对象
		fw = new FileWriter("b.txt");
		for(int i = 0;i<100;i++){
			//把内容写入文件
			fw.write("helloworld");
			if(i%10 == 0){
				//清空缓冲区,把内容写入到文件中
				fw.flush();
			}
		}
		
		//最后把缓冲区中残留的数据写入文件
		fw.flush();
		
	} catch (IOException e) {
	
		e.printStackTrace();
	}finally{
		if(fw != null){
			try {
				//close关闭输出流时会先清理缓冲区
				fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}
		
	}
	
			
			
		
	}
}

5、FileWriter的追加构造器

IO流基础学习笔记(一)

package com.rl.io;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
/**
 * FileWriter的追加构造器
 */
public class IOCharDemo2 {
	public static void main(String[] args) {
		writerFile1();
		
		
	}
	


public static void writerFile1(){
	FileWriter fw = null;
	try {
		//创建输出流对象的追加构造器
		fw = new FileWriter("b.txt",true);
		for(int i = 0;i<100;i++){
			//把内容写入文件
			fw.write("helloworld");
			if(i%10 == 0){
				//清空缓冲区,把内容写入到文件中
				fw.flush();
			}
		}
		
		//最后把缓冲区中残留的数据写入文件
		fw.flush();
		
	} catch (IOException e) {
	
		e.printStackTrace();
	}finally{
		if(fw != null){
			try {
				//close关闭输出流时会先清理缓冲区
				fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}
		
	}
	
			
			
		
	}
}

6、输出换行

package com.rl.io;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
/**
 * 输出换行,windos中:\r\n 
 */
public class IOCharDemo3 {
	public static void main(String[] args) {
		writerFile1();
		
		
	}
	


public static void writerFile1(){
	FileWriter fw = null;
	try {
		//创建输出流对象
		fw = new FileWriter("b.txt");
		for(int i = 0;i<100;i++){
			//把内容写入文件,内容换行,为了兼容记事本,我们一般用\r\n的方式来进行换行
			fw.write("i love you" +i +"\r \n");
			if(i%10 == 0){
				//清空缓冲区,把内容写入到文件中
				fw.flush();
			}
		}
		
		//最后把缓冲区中残留的数据写入文件
		fw.flush();
		
	} catch (IOException e) {
	
		e.printStackTrace();
	}finally{
		if(fw != null){
			try {
				//close关闭输出流时会先清理缓冲区
				fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}
		
	}
	
			
			
		
	}
}

7、FileWriter的写入功能(5种)

IO流基础学习笔记(一)

package com.rl.io;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
/**
 * FileWriter的写入功能(5种)
 */
public class IOCharDemo4 {
	public static void main(String[] args) {
		writerFile1();
		
		
	}
	


public static void writerFile1(){
	FileWriter fw = null;
	try {
		//创建输出流对象
		fw = new FileWriter("b.txt");
		char[] chs = {'a','c','v','d','s'};
		fw.write(chs);
		//把字符数组的一部分数据写入进文件中,第一个参数是字符数组,第二是参数是开始索引,第三个参数是从开始索引以后取得字符串的长度,注意不能越界
		fw.write(chs, 2, 3);
		//通过int值来写入相应的ascii码值
		fw.write(100);
		//写入字符串
		fw.write("100");
		//
		fw.write("helloworld", 3, 4);
		
		
		//最后把缓冲区中残留的数据写入文件
		fw.flush();
		
	} catch (IOException e) {
	
		e.printStackTrace();
	}finally{
		if(fw != null){
			try {
				//close关闭输出流时会先清理缓冲区
				fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}
		
	}
	
			
			
		
	}
}