诀别用FileIn/OutputStream 和FileWrite/Reader 将某些数据写入到某个文件,再将写入的内容从中读出
分别用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(); } }