标签:
FileOutputStream 继承 OutputStream 并不提供flush方法的重写
所以无论内容多少write都会将二进制流直接传递给底层操作系统 flush无效果
而Buffered系列的输入输出流函数单从Buffered这个单词就可以看出他们是使用缓冲区的
应用程序每次IO都要和设备进行通信,效率很低,因此缓冲区为了提高效率,当写入设备时,先写入缓冲区,等到缓冲区有足够多的数据时,就整体写入设备
楼主flush()的那行可以不写 而是把close()拿上去,flush会刷新缓冲区,而close方法内部是会先调用flush方法再执行关闭方法的,异曲同工。
package src.readFile; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; public class ReadFile { public static void main(String[] args) { try { //已使用的最大卡号 int MAXCARDNO = 497895; //int MAXCARDNO = 10; //已使用卡号最大条数 int COUNTCARDNO = 119039; //int COUNTCARDNO = 3; Scanner in = new Scanner(new File("d:"+File.separator+"cardno.txt")); //初始化读入文件数据个数 long[] inputArr = new long[COUNTCARDNO]; int i = 0; System.out.println("读入文件内容:"); while (in.hasNextLine()) { String str = in.nextLine(); str = str.substring(5); Long intTemp = Long.parseLong(str.trim()); //splitt(str); // System.out.println(intTemp); inputArr[i++]=intTemp; } String[] outputArr = new String[60000]; String cardNoTemp = ""; //未使用的卡号循环记录 int abak = 1; //未使用的卡号数组下标记录 int outI = 0; //输出文件生成 String filePath1 = "D:"+File.separator+"output.txt"; try { FileWriter fw = new FileWriter(filePath1); BufferedWriter bw = new BufferedWriter(fw); System.out.println("未使用卡号如下:"); for (int inputI=0;inputI<COUNTCARDNO;inputI++) { for (int a=abak; a<=MAXCARDNO; a++) { if (a==inputArr[inputI]) { abak=++a; break; } else { cardNoTemp = "04003" + codeAddZero(String.valueOf(a), 9); outputArr[outI++] = cardNoTemp; bw.write(cardNoTemp); bw.newLine(); System.out.println("没有使用的cardNo:" + cardNoTemp); } } } bw.flush(); bw.close(); fw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); } } /** * 卡号自动前补零操作 * @param code * @param len * @return */ public static String codeAddZero(String code, int len){ String strCode = code; while (strCode.length() < len) { strCode = "0" + strCode; } return strCode; } }
文件逐行写入BufferedWriter的刷新flush()方法
标签:
原文地址:http://www.cnblogs.com/cxryangguang/p/4572042.html