mport java.io.*;
public class BufferedReaderExa 
{
   public static void main(String[] args) 
{  File f=new File("G://java code/jackxu/src","secret.txt");
   String content[]={"你好","近来工作忙吗?我一次次的离开,是为了一次次的回  来","常联    系","祝福"};
   try{ 
                FileWriter outOne=new FileWriter(f); 
        BufferedWriter outTwo=new BufferedWriter(outOne);
for(int k=0;k<content.length;k++)
{ outTwo.write(content[k]);
         //outTwo.newLine();
}
outTwo.close();
outOne.close();
FileReader inOne=new FileReader(f);
BufferedReader inTwo=new BufferedReader(inOne); 
String s=null;
int i=0;
char c[]=null;
i=inTwo.read(c,0,7);
System.out.println(c);
                inOne.close();
inTwo.close();
       }
      catch(IOException e)
       {
System.out.println("Error"+e);
       }
 }
  }
上面的代码是把content[]中的内容通过BufferedWriter类写到指定的目的地secret.txt,关闭流,在打开一个流读取目的地的内容,通过i=inTwo.read(c,0,7)把secret.txt中的内容读到指定的数组c中,输出c时,出现错误,这个是怎么回事??

解决方案 »

  1.   


    char c[]=null;
    i=inTwo.read(c,0,7);c是null
      

  2.   


    import java.io.*;
    public class MainClass
    {
    public static void main(String[] args) throws Exception
    {
    byte[] bb;
    File file=new File("d:"+File.separator+"secrect.txt");
    OutputStream output=new FileOutputStream(file,true);
    InputStream input=new FileInputStream(file);
    String[] content={"dfdf","保健及地方的奋斗奋斗"};
    for(int i=0;i<content.length;i++)
    {
    byte[] b;
    b=content[i].getBytes();
    output.write(b);
    }
    output.close();
    bb=new byte[(int)file.length()];
    input.read(bb);
    System.out.println(new String(bb));
    input.close();
    }
    }
      

  3.   


    char c[]=null;
    改为
    char c[] = new char[7];
      

  4.   

    知道了。还有就是当我把outTwo.newLine();起用时,在secret.txt,他是按系统指定的行分隔符按行存储
    的,"你好"占一行,当我以字符输出流输出时,“你好”那一行右边的空格占了两个字符,这是不是因为读取时多个空格被默认成两个????
      

  5.   

    newLine方法插入的行分隔符是和系统有关的,行分隔符在windows 下是 \r\n,在Linux下面是 \n, 在Mac下是 \r,我想lz大概是在windows下运行的,所以行分隔符是\r\n两个,在用BufferReader的read方法读取的时候会将这两个字符分别读出,各占一个字符的位置~