本人初学java书只看了1/3所以很多功能不懂讲错了高手别笑。。因为要使用读取文件功能匆匆找了读取文件的类选了FileReader,觉得比较容易上手不过读出来的字符类型是char[]很麻烦,我目的是要将文件内容读取成String类型,但是没找到能把文件直接读取成String类型的方法。觉得读文件用char[]很麻烦,要定义一个定长的空类型比如new char[1024]才能用,这样要把char[]转换成String类型时候如果没注意到空char也在里面就会莫名其妙地多出一大堆空白。而且不懂java怎么才能在定义时给char[]类型赋值,如果是C语言可以用char[] a={"sdfdsfdf"}在定义时给char[]赋值,想请问高手java里怎么在定义时给char[]赋初值?写得比较乱,主要问题有两个:1.java读取文件能不能直接读成String类型?为什么java惯用String类型又在读取文件时候保持char[]方法。。2.java怎么在定义时给char[]赋初值?试过很多种写法一直出问题。。

解决方案 »

  1.   

    java读取文件能不能直接读成String类型?
    java读文件的时候可以直接读成String类型。
    DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(new File("filepath"))));
    //读出文件的一行,以String类型保存
    String line = dis.readLine();为什么java惯用String类型又在读取文件时候保持char[]方法都可以java怎么在定义时给char[]赋初值?char[] c = new char[]{1,2,3};以上仅供参考。
      

  2.   


    是一行一行读取对么?那高手能不能给一下读取一篇文章完整的代码呢?就是从定义打开到读取完整篇文章,保存在String[]里代码应该不会长吧,谢谢了`````
      

  3.   

    把读出的文件每行内容保存在list中
    try
    {
    DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(new File("filepath")))); String line = null;
    List list = new ArrayList();
    while((line = dis.readLine()) != null)
    {
    list.add(line);
    }
    }
    dis.close();
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }
    代码是直接手写上去的,可能有错误,自己编辑下。
      

  4.   

    这样赋值会不会太麻烦了。。比如我想把“This is a program file.”或者更长的句子赋给char[]类型,在C里面这是很简单的一行定义时字符串赋值可以解决的。如果按上面的这种方法还得一个个字符分开写这……如果我用char[] a=new char[]{"Hello world!"}又会报类型错误
      

  5.   

    答:
    1)java读取文件时,当然能直接读成String类型,而是对文本文件处理时,一个String代码一个文本行,这样列方便.
    代码如下:从文件c:/t.txt中读取一行:
    BuferedReader br=new BufferedReader(new FileReader("c:/t.txt"));
    String line=r.readLine();
    若line==null则表示已读到文件结束.
    2)不鼓励用char[]来处理字符串.若对char[]处理字符串很偏爱,则可用JAVA中的StringBuilder或StringBuffer
      

  6.   

    我用char[] a=new char[]{"Hello world!"}又会报类型错误你可以这样: char c[] = "HelloWorld".toCharArray();在java中与C里,数组是不同的。
      

  7.   

    谢谢高手支持!!不是对char[]偏爱呵呵觉得还是String用起来更方便`````
      

  8.   

    这个读取方法我喜欢`````简洁明了!不过我用while((line=r.readLine())!=null) {
    System.out.println("1");
    System.out.println(line);
    }测试时发现readLine()一次就把文本所有内容读取完了。。我读取的TXT文档全屏显示下有4行快100个英文单词,如果是一行一行读取应该不至于一次就被读完,这只是特殊情况还是?readLine()是否多次读取是根据情况不同而区分对付么?谢谢高手关注~~~