初学I/O问题,求解惑
安装任何一个软件,都有一个安装协议给大伙儿看,我突发奇想,想自己写一个
【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表示是什么啊,求教?
------解决方案--------------------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();
}
}
------解决方案--------------------你是不是从out.txt中每次用readLine读一行的时候,没有自己加一个换行"\n",JTextArea(string),你往这个string加"\n"试下