import java.io.*;
 class A
{
public static void main(String args[]) throws IOException
{
char c[] = new char[500];
FileReader fr = new FileReader("c:\\a.txt");
int num = fr.read(c);                    //这里为什么这样读取数据的。
String str = new String(c,0,num);     //这个String的构造不是很理解。
System.out.println("读取的字符:"+num+",其内容如下:");
System.out.println(str);
}
}这个程序如何处理实际的回车??

解决方案 »

  1.   

    public String(byte[] bytes,
                  int offset,
                  int length)
    bytes - 要解码为字符的字节
    offset - 要解码的首字节的索引
    length - 要解码的字节数 
      

  2.   

    fr.read(c);是指盡可能地讀滿c.length個字符保存在c中,而fr.read()的返回值是實際讀取到的個數
      

  3.   

    楼主的程序,设计上,不太好,
    如果,遇到汉字,num记录的就不是字符数量了。
    代码当中,并没有显式的,对于回车或者换行符进行处理的语句。
      

  4.   

    楼主还要了解关于编码的一些常识
    以及学会查看API文档
      

  5.   

    你的第二个问题  查查String的构造方法吧 
      

  6.   

    程序后面添加下面两句测试:
    String test=str.replaceAll("\r\n", "666");
    System.out.println(test);
    结果:读取的字符:34,其内容如下:
    bvfdugfk
    vbfghdksjvl
    dcvhfjdzdbvfdugfk666vbfghdksjvl666dcvhfjdzd666
      

  7.   

    int num = fr.read(c);                    //这里为什么这样读取数据的。
    一次性最多读取字符数组c的长度那么多的字符,返回实际读取的字符个数,因为实际读取到的字符个数与c的长度不一定相等,如文件末尾。
    String str = new String(c,0,num);     //这个String的构造不是很理解。
    将实际读取的字符组成字符串。
    另外,你的代码中没有循环,文件长的话,只会读出部分。
      

  8.   

    再多看遍API 
    看方法的参数与返回值 以及方法的介绍
      

  9.   


            String str = new String(c,0,num);     //用C数组里的C[0]到C[NUM]的构造这个对象,因为数组是有可能没装满的