安装任何一个软件,都有一个安装协议给大伙儿看,我突发奇想,想自己写一个
【PS:我是java新手,没学java语法,直接swing后,需要用哪里就学哪里,刚开始I/O】我首先写了一个管理员的输入框界面和一个用户的查看界面
输入框界面里,打算从输入框输入一堆文字, 然后放入文本in.txt中,这不是问题。
为了保证in.txt安全,我在完成in.txt时生成out.txt。问题在于用户查看界面,我打算用一个string[]或StringBuffer接收out.txt的内容,然后把string[]或StringBuffer输出到显示文字的显示框
里。但是,out.txt有汉字!而且基本是汉子,我搞了很久!终于发现,我不会接受空格键以及不知道结束判别标志!提问:
怎么在string[]或StringBuffer里接收空格键。比如
---out.txt--------
---注意事项:
---1、吃饭
---(此处空格)
---2、睡觉
---(此处空格)
---3、洗澡
-----------------
1、如果是string[],定义[]的大小是个问题,我打算顶一个int getLine()来获取行数,
然后line = getLine(); 最后new String[line].
但是吧,有个问题,我定义的getLine()获取不了空格!,比如上面的out.txt,我定义的结果是3而不是5,不知道各位有没有什么法子获取空格键!2、如果是StringBuffer,我就更不知道怎么做了,求解析3、我自己写的if(string != ‘\n’)报错string不能比对字符,而“\r”显然不现实,这是个字符串而不是转义字符,所以请问,java在文本中每一行的读取的结束标志是什么,java表示是什么啊,求教?

解决方案 »

  1.   

    java由现成的包装好的io,不用像C语言那么辛苦
    java的BufferedReader可以一次读一行 有缓冲 结束用Reader接口的ready()方法判断
    显示的时候System.getProperty("line.separator")可以换行,在windows中是"\r\n",linux是"\n"
    空格不知道你是否要去除 如果照原样显示的话 不用管它 (如果要string != ‘\n’,改为!"a string".equals("\n") )具体讲
    假设out.txt在项目根目录 不是src下
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.Reader;
    import java.io.StringWriter;public class ReadFile {
    public static void main(String[] args) 
    throws IOException { 
    System.out.println(read("out.txt"));
    }
    public static String read(String filename) throws IOException { 
        BufferedReader in = new BufferedReader( 
          new FileReader(filename)); 
        StringBuilder sb = new StringBuilder(); 
        while(in.ready()) 
          sb.append(in.readLine() + System.getProperty("line.separator"));
        return sb.toString(); 
      } }
      

  2.   


    谢谢你!
    请恕我啰嗦,我还想问些:
    昨晚按你的写了下,后来发现我天真了,我以为只要把string写进JTextArea(string),就可以实现显示
    “协议”中的文字,但我错了,理由如下:
    假设out.txt:
    1、你好
    2、你很好
    那么显示的不是如上的形式,而是:
    1、你好2、你很好如果是操纵文本,我倒可以用一个bw.newLine()解决,但是是放进JTextArea(string)!我想了下,没想到怎么办!问:
    1、如上这个问题,怎么解决?
    2、或许我的思路就是错的,请教有经验的你,你会使用什么方式显示protocol呢?
      

  3.   

    你是不是从out.txt中每次用readLine读一行的时候,没有自己加一个换行"\n",JTextArea(string),你往这个string加"\n"试下
      

  4.   


    你看看我这个string获取部分!获取全是null import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;public class StreamOperate {
    public static void main(String[] args) throws IOException {
    String readPath = "F:\\RP.txt" ;
    String writePath = "F:\\out.txt" ;
    FileReader filereader = new FileReader(readPath) ;
    BufferedReader br = new BufferedReader(filereader) ;
    FileWriter filewriter = new FileWriter(writePath) ;
    BufferedWriter bw = new BufferedWriter(filewriter) ;
    int lineSum = 0 ;
    while(br.readLine()!= null){
    lineSum ++ ;
    }
    System.out.println(lineSum);
    /*
     * 为什么直接设置为lineSum = 6就可以?
     */
    String[] strLine = new String[lineSum] ;
    for(int i=0; i<lineSum; i++){
    strLine[i] = new String();
    }
    for(int i=0; i<lineSum; i++){
    strLine[i] = br.readLine() ;//为什么这一步获取不了数据?而会是null
    // bw.write(strLine[i]);//因为上一步获取不了数据,为null,这一步为空指针异常
    }
    for(int i=0; i<lineSum; i++){
    System.out.println(strLine[i]);
    }
    System.out.println(lineSum);
    br.close();
    bw.flush();
    bw.close();
    }
    }这是我担心代码出错,提前写的一个实验代码!
    果然出错了
      

  5.   


    我突然明白了!
    thanks!