尤其是write()方法循环执行几次之后再flush发现数据一点都没写进文件。越研究越觉得问题多,求大虾详细说下这几个字节型和字符型的IO类的运行机制。小弟冰天雪地裸体360度托马斯旋转跪求

解决方案 »

  1.   

    看看你的代码怎么write的?你write完了之后,close掉再看
      

  2.   

    网上找的例子:import java.io.*;public class FileWriterSample {
    public static void main(String[] args) {
    write("E:\\hehehe\\Metadata.txt", "hello");
    } public static void write(String path, String content) {
    String s = new String();
    String s1 = new String();
    try {
    File f = new File(path);
    if (f.exists()) {
    System.out.println("文件存在");
    } else {
    System.out.println("文件不存在,正在创建...");
    if (f.createNewFile()) {
    System.out.println("创建成功!");
    } else {
    System.out.println("创建失败!");
    }
    }
    BufferedReader input = new BufferedReader(new FileReader(f));
    while ((s = input.readLine()) != null) {
    s1 += s + "\n";
    }
    System.out.println("文件内容:" + s1);
    input.close();
    s1 += content;
    BufferedWriter utput = new BufferedWriter(new FileWriter(f));
    utput.write(s1);
    utput.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
      

  3.   

    输出流 文本文件用readline比较好,图片之类的定义byte数组更好点
      

  4.   

    package yidu.nimblewind.test;import java.io.*;
    import java.util.*;public class Test {

    public static void main(String[] args) {
    File f;
    try {
    f = new File("myinput.txt");
    Scanner s = new Scanner(System.in);
    boolean flag = true;
    // 1 point BufferedWriter bw = new BufferedWriter(new FileWriter(f,true));
    while(flag) {
    BufferedWriter bw = new BufferedWriter(new FileWriter(f,true));
    bw.write(s.next());
    if(s.next().equalsIgnoreCase("quit")) {
    bw.flush();
    bw.close();
    break;
    }
    }
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    //1 point 表示的是BufferedWriter bw = new BufferedWriter(new FileWriter(f,true));这条代码在循环外的时候我输入 a回车b回车c回车quit 结果是ac
    我清空myinput.txt文件后,将上面的代码定到循环内,结果只显示C。两种情况下quit打死都没写进去。这是个神马情况。代码是我朋友写的,我看半天也没找到错误原因。请大家指点
      

  5.   

    Scanner s = new Scanner(System.in);
    中的System.in记录的是一行的数据,具体可以看一下底层实现
    换行后只记录最后一行的数据
    你试试最后一行输入:sfdasfd
    当然最好在代码执行前将myinput.txt删掉
      

  6.   

    楼上兄台果然是个人才,那请问我a回车b回车c回车quit 结果是ac,b为什么没了,quit也没了