各种输入输出代码(供 研究)

时间:2021-07-12 00:36:20

一、使用FileInputStream类读取文本文件的数据

package Test;

import java.io.FileInputStream;
import java.io.IOException;
/*
 * 使用FileInputStream读取文本文件的数据
 * 测试后结果是:不知道怎么能改成读取汉字的
 * 最后一句*/
public class Test3 {
	public static void main(String[] args) throws IOException {
		//创建对象
		FileInputStream  fis=new FileInputStream("E:\\myDoc\\hello.txt");//这个程序不会自动写好这个文件
		int date ;
		System.out.println("可读取的字节数为:"+fis.available());
		System.out.println("文件内容为:");
		//循环读取数据
		while((date=fis.read())!=-1){//date=fis.read())!=-1表示一个字节一个字节读这个文件,读到最后一个停止。
			System.out.print ((char)date+"");//需要强制转换成char,否则文件中写入a会读出97.
		}
		//关闭流对象
		fis.close();
	}
}

二、使用FileOutputStream类向文本文件写入数据,该方法重写原来写入的内容会被覆盖

package Test;
//使用FileOutputStream类向文本文件写入数据,该方法重写覆盖
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class test4 {
	public static void main(String[] args) throws IOException {
		String str="好好学习 ";//要写的内容
		byte[]words=str.getBytes();//字节数组
		//创建流对象,以追加方式写入文件
		FileOutputStream fos=new FileOutputStream("E:\\myDoc\\hello.txt");
		fos.write(words, 0, words.length);//从输入输出流读取最多len的长度的字符,保存到字符数组c中,
		                                  //保存的位置从off开始,返回实际读取的字符长度
		/*简单来说,write(byte[] b, int off, int len)就是将数组 b 中的 len 个字节按顺序写入输出流。
		 * 如果 b 为 null,则抛出 NullPointerException。如果 off 为负,或 len 为负,又或者 off+len 大
		 * 于数组 b 的长度,则抛出 IndexOutOfBoundsException。如果 len 为零,则不写入字节
		 * 否则,首先写入字节 b[off],然后写入字节 b[off+1],依此类推;最后一个写入字节是 b[off+len-1]。
		 * */
		System.out.println("文件已更新");
		fos.close();//关闭流
	}

}
三、//使用字符流BufferedReader类 和FileReade类读取文本文件
package Test;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
//使用字符流BufferedReader类 和FileReade类读取文本文件
public class Test5 {
	public static void main(String[] args) throws IOException {
		try {
			// 创建一个FileReader对象
			FileReader fr = new FileReader("E:\\myDoc\\hello.txt");
			// 创建一个BufferedReader对象
			BufferedReader br = new BufferedReader(fr);
			// 读取一行信息
			String line = br.readLine();
			while (line != null) {
				System.out.println(line);
				line = br.readLine();
				 
			}
			// 关闭流
			br.close();
			fr.close();
		} catch (Exception e) {
			System.out.println("文件不存在");
		}

	}

}

四、//使用字符流BufferedWrite和FileWriter写文件,都是字符输出流的Write抽象下的子类。他们可以通过
//字符流的方式并通过缓冲区把数据写入文件,这也提高了写文本文件的效率。

package Test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
//使用字符流BufferedWrite和FileWriter写文件,都是字符输出流的Write抽象下的子类。他们可以通过
//字符流的方式并通过缓冲区把数据写入文件,这也提高了写文本文件的效率。
public class Test6 {
public static void main(String[] args) throws IOException {
	try {
		//创建一个FileWriter对象那个
		FileWriter fw=new FileWriter("E:\\myDoc\\hello.txt");
		//创建一个BufferedWriter对象
		BufferedWriter bw=new BufferedWriter(fw);
		//写入信息
		bw.write("大家好!") ;
		bw.write("我正在学习BufferdeWriter");
		bw.newLine();
		bw.write("请多多指教");
		bw.newLine();
		bw.flush() ;//刷新缓冲区
		fw.close();// 
	} catch (Exception e) {
		System.out.println("文件不存在");
	}
	
	//读取信息---------------------------------------------------------------------------
	try {
		// 创建一个FileReader对象
		FileReader fr = new FileReader("E:\\myDoc\\hello.txt");
		// 创建一个BufferedReader对象
		BufferedReader br = new BufferedReader(fr);
		// 读取一行信息
		String line = br.readLine();
		while (line != null) {
			System.out.println(line);
			line = br.readLine();
		}
		// 关闭流
		br.close();
		fr.close();
	} catch (Exception e) {
		System.out.println("文件不存在");
	}
}
}