6、IO流常见需求: ****字符流: (1)需求1:在硬盘上创建一个文件并写入信息 用字符写入流:FileWriter FileWriter fw = new FileWriter("g:\\filewriter.txt"); fw.write("输入信息"); fw.write("也可以写入字符数组".toCharArray()); fw.flush(); fw.close(); (2)需求2:在原有文件上续写数据 FileWriter fw = new FileWriter("g:\\filewriter.txt",true); fw.write("还可以续写信息"); fw.write("也可以写入字符数组".toCharArray()); fw.flush(); fw.close(); (3)需求3:读取硬盘上的文本文件,并将数据打印在控制台 FileReader fr = new FileReader("g:\\filewriter.txt"); **第一种读取方法:一个一个字节的读 int ch = 0; ch = fr.read(); sop((char)ch); fr.close(); **第二种读取方法:利用数组来提高效率 char[] buf = new char[1024]; int len = 0; while((len = fr.read(buf))!=-1) { sop(new String(buf,0,len)); } fr.close(); (4)需求4:拷贝文本文件 利用缓冲区提高数据读写效率 (无缓冲区就相当于一滴一滴的喝水,有缓冲区就相当于一杯一杯的喝水) BufferedReader bufr = new BufferedReader(new FileReader("g:\\filewriter.txt")); BufferedWriter bufw = new BufferedWriter(new FileWriter("d:\\copyfilewriter.txt")); String line = null; while((line = bufr.readLine())!=null) { burw.write(line); bufw.newLine(); bufw.flush(); } bufr.close(); bufw.close(); ****字节流:字节流写入时没有刷新 (1)需求1:在硬盘上创建一个文件并写入信息(字节流写入时没有刷新) FileOutputStream fos = new FileOutputStream("g:\\filestream.txt"); fos.write(97);//写入一个字节,int:97代表写入char:a fos.write("也可以写入字节数组".getBytes());//通常使用此种方式写入,直观! fos.close(); (2)需求2:在硬盘已有文件上续写数据(字节流写入时没有刷新) FileOutputStream fos = new FileOutputStream("g:\\filestream.txt",true); fos.write("创建字节写入流时,传进去一个true参数就可以继续写入信息".getBytes()); fos.close(); (3)需求3:读取硬盘上的文件 FileInputStream fis = new FileInputStream("g:\\filestream.txt"); **第一种读法:一个字节一个字节的读(此种读法慢) int ch = 0; while((ch = fis.read())!=-1) { sop((char)ch); } **第一种读法:利用字节数组读(此种读法效率有一定提高) byte[] buf = new byte[1024]; int len = 0; while((len = fis.read())!=-1) { sop(new String(buf,0,len)); } (4)需求4:拷贝字节文件,如图片或者MP3或者电影 **第一种拷贝:不带缓冲区(慢,还是效率问题) FileInputStream fis = new FileInputStream("g:\\1.mp3"); FileOutputStream fos = new FileOutputStream("g:\\copy1.mp3"); byte[] buf = new byte[1024]; int len = 0; while((len = fis.read(buf))!=-1) { fos.(buf,0,len);//字节流写入无需刷新 } fis.close(); fos.close(); **第二种拷贝:带缓冲区,高效 BufferedInputStream bufi = new BufferedInputStream(new FileInputStream("g:\\1.mp3")); BufferedOutputStream bufo = new BufferedOutputStream(new FileOutputStream("g:\\copy1.mp3")); int ch = 0; while((ch = bufi.read())!=-1) { bufo.write(ch); } bufi.close(); bufo.close(); |