安装任何一个软件,都有一个安装协议给大伙儿看,我突发奇想,想自己写一个
【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表示是什么啊,求教?
【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的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();
} }
谢谢你!
请恕我啰嗦,我还想问些:
昨晚按你的写了下,后来发现我天真了,我以为只要把string写进JTextArea(string),就可以实现显示
“协议”中的文字,但我错了,理由如下:
假设out.txt:
1、你好
2、你很好
那么显示的不是如上的形式,而是:
1、你好2、你很好如果是操纵文本,我倒可以用一个bw.newLine()解决,但是是放进JTextArea(string)!我想了下,没想到怎么办!问:
1、如上这个问题,怎么解决?
2、或许我的思路就是错的,请教有经验的你,你会使用什么方式显示protocol呢?
你看看我这个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();
}
}这是我担心代码出错,提前写的一个实验代码!
果然出错了
我突然明白了!
thanks!