`
wjheye
  • 浏览: 82245 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

分别用FileIn/OutputStream 和FileWrite/Reader 将某些数据写入到某个文件,再将写入的内容从中读出

阅读更多
import java.io.*;
/*
 * 1、流是字节序列的抽象概念
 * 2、文件时数据的静态存储形式,而流是指数据传输时的形态
 * 3、java的流分两类:节点流类和过滤流类(处理流类)
 * 4、InputStream 和OutputStream 都是用来处理字节的 用来处理二进制格式的文件
 * 5、Reader 和Writer 是所有字符流来的抽象基类,用于简化对字符串的输入输出编程,即用于读写文本数据
 * 6、二进制文件和文本文件的区别:文本文件时二进制文件的特例
 * 7、本程序目的是 用FileOutputStream类想文件中写入一个字符串,然后用FileInputStream读出写入的内容
 * 8、或是用FileWriter类向文件中写入一个字符串,然后用FileReader读出写入的内容
 */
public class FileStream {
	public static void main(String args[]) throws IOException{
		FileOutputStream fos  = new FileOutputStream("hello.txt");
		fos.write("www.baidu.com".getBytes());
		//把字符串的内容写入到文件中 但write方法不支持直接写入字符串的 所以获得字符串的字节数组 并把回字节数组的所有内容写入到文件中
		//write方法可以写入一个字节 或者一个字节数组
		fos.close();
		//此处如果fos.close方法也可以 程序会自动的调用flush刷新方法 将数据写入到文件当中
		//但是 如果调用write(int byte)方法不会自动调用flush刷新方法 将数据写入到文件当中
		//write(byte [] buf)方法会自动的调用flush方法
	
		File file = new File("hello.txt");
		byte buf []= new byte[1024];
		FileInputStream fis  = new FileInputStream(file);
		int len = fis.read(buf);
		System.out.println(new String(buf,0,len));
		fis.close();
		
		//以下用FileWriter 和FileReader 处理文件
		FileWriter fw = new FileWriter("hell.txt");
		fw.write("hello world 世界");
		//此时的write的方法是将数据写入到缓冲区当中了,并没有真的完完整整的写入到磁盘当中
		fw.close();
		//此处必须调用close方法才能将数据刷新到文件或者磁盘当中 此write(String s)方法不会自动的调用flush方法
		FileReader fr = new FileReader("hell.txt");
		char charBuf [] = new char[1024];
		// 字符数组
		int le  = fr.read(charBuf);
		//如果 le=-1,那么程序会抛出 String index out of range:-1 越界的错误,说明没有从文件中读取到内容或者是没有写入到文件中内容
		System.out.println(new String(charBuf,0,le));
		fr.close();
		
		
		
	}

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics