InputStreamReader是把InputStream转换为Reader的,你应该这么写
BufferedReader in = new BufferedReader(new FileReader("hehe.txt"));
像这样才用InputStreamReader,因为System.in是个InputStream
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

解决方案 »

  1.   

    恩。那就是说不能把BufferedReader或FileReader写入FileReader了?
    那还想问问怎么把一个STRING 或BYTES[]写入一个文件呢?
    谢谢
      

  2.   

    你直接用FileWriter或者FileOutputStream的write方法就行啦
      

  3.   

    用一个转换工具来读写,当然会报错。InputStreamReader只是一个转换工具。把字节流转为字符流。
      

  4.   

    谢谢,可是我做了后发现这样一个问题:读入一个文件的内容转换为String,原文件内容是这样:
    123
    456
    789
    再把读出的String内容写入一个新的文件就成了123456789(其实读出的String就是123456789了)
    请问怎样控制才能让它写入新文件时还是原来的3行格式。
      

  5.   

    读入是这样的:
    FileInputStream fis = new FileInputStream("in.txt");
          BufferedReader read = new BufferedReader(new InputStreamReader(fis));
          String msg,oldbb;
          while((msg=read.readLine()) != null){
            buf.append(msg);
            oldbb=buf.toString();
    写入是这样的:
    BufferedWriter bw = new BufferedWriter( new FileWriter( new File( "out.txt" ) ) );
         bw.write( oldbb );
         bw.close();怎样才能不改变原来文件的格式呢?很着急!请帮帮我。
      

  6.   

    FileInputStream fis = new FileInputStream("in.txt");
          BufferedReader read = new BufferedReader(new InputStreamReader(fis));
          String msg,oldbb;
          while((msg=read.readLine()) != null){
            buf.append(msg);
            oldbb=buf.toString();
    这样过后:
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter( new File( "out.txt" ) ) );
    out.println(oldbb);
    out.close();
    但是就没有分行,也可以一边读,一边写,格式是一样的
      

  7.   

    啊?只能这样,我就想都读完了,要多整个STRING作个操作后,再写入,格式就是不一样了!
    要是想一边读,一边写,怎样才能写入文件时是追加前面的,不是覆盖呢?
    再次感谢!
      

  8.   

    star821116(回家真好) :
    怎样一边读一边写,也就是追加文件内容啊?怎么做呢?
    帮忙写一下,谢谢。