作者TonyQ (骨头)
看板java
标题Re: 想请问一下有关於档案的问题..谢谢!!
时间Wed Apr 18 02:54:03 2007
※ 引述《[email protected] ( )》之铭言:
: 以下是我的程式码
: try{
: FileReader fr=new FileReader("c:\\软功夫.txt");
: //建立一个名称为fr的FileReader物件,并且将档案路径及档名传入
: BufferedReader bf=new BufferedReader(fr);
: //建立一个名称为br的BufferedReader物件,并且将fr传入
: String str=null;
//here you set str =null
: String line=null;
: int i=0;
: while ((line=bf.readLine()) != null)
: {
: i++ ; //用来算档案有几行
: System.out.println("line:"+line); //列印出line的值看一看
: str=str+line;
// let's see how it work in first time: null + "xxxx"
: System.out.println("str:"+str); //列出str的值看一看
: }
: System.out.println("档案共"+i); //算出档案有几行
: System.out.println("档案内容"+str); //列出档案的内容
: bf.close();
: fr.close();
: }
: catch (Exception e)
: {
: System.out.println("Exception happens");
: }
: ps::
: 我的档案是一个简单的记事本档案..一开始我enter了5次
: 然後才开始写内容
: 想请问两个问题..
: 1..我在while的回圈里面,如果列出line的值来看看,为什麽都没显示任何讯息,
: 也不会显示null
因为是 "" , ""和 null的差别应该不需要多说吧 ? :)
你的Enter按键触发的动作可以看作事产生 "\r\n "
而readLine是以 \n (\r也会顺便) 做分隔 ,
所以前面你的五下 enter 可以看成 "\r\n\r\n\r\n\r\n\r\n"
所以前面五行的readLine的内容会跟 .split("[\r]?\n")
出来的结果差不多,就是依序出现五个 "" 。
: 2. System.out.println("档案内容"+str);
: 这一行我印出档案内容的时候.为什麽前面会多了一个null的字
理由我在前面说明了
一样是 "" 和 null的误用
你应该做的是String str= ""
或者是在开始的时候 , 定义str的起始值。
当你在str 还是 null状态的时候就做 字串加法 的动作 ,
null会被当成字串纪录。
: 3.请问一下bf.close();
: fr.close();
: 这两行不写也没影响,因为我有趣run程式结果.好像都依样
: 请问这个有必要关掉吗,虽然书上都是这样写说资料流要关掉
: 但不关掉会有差吗..可不可以举个不关掉但有差别的例子.谢谢!!
资料串流有开启最好就关闭(表示操作结束),
这样系统也不会浪费资源在维持串流的运行。
(特别是对资料库而言,一个串流就等於是一个资料库的连结,忘了关影响会很大,
请想像BBS上有一堆幽灵挂站者的现象,虽然没在动作却占着资源。XD)
另外,写入的串流如果没有关闭的话,资料是不会进档案的。
请养成这个好习惯。:)
--
有些累,
所以语气稍嫌随便了些,如果有错就请诸位大德帮忙指证吧。^^
--
I am a person, and I am always thinking .
Thinking in love , Thinking in life ,
Thinking in why , Thinking in worth.
I can't believe any of what ,
I am just thinking then thinking ,
but worst of all , most of mine is thinking not actioning...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.27.68