史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   JAVA 檔案處理問題 (http://forum.slime.com.tw/thread205775.html)

leowang 2007-05-18 10:24 PM

JAVA 檔案處理問題
 
我用JAVA寫一個程式 來讀取.TXT的檔案
例如TXT的內容為
語法:

000001  as01  leo    r12345678
000002  as01  moo  e22356695
000003  as01  kko  u12345646
.
.
.
.
.

要如何能夠在輸出時 把"as01"這個欄位刪掉
前提之下 不能夠更改TXT裡的資料


我的程式碼

語法:

import java.io.*;

public class aa
{
    // 主程式
    public static void main(String[] args) throws Exception
    {
        String file = "logFile.drc";
        // 建立File物件
        File name = new File(file);
        if ( name.exists() )
        {
          // 建立BufferedReader的輸入串流物件
          BufferedReader fr = new BufferedReader(new FileReader(name));
                       
          String str;
          // 讀取資料
          while( (str = fr.readLine()) != null)
              System.out.println(str); 
          fr.close();      // 關閉串流
        }
        else
          System.out.println("檔案[" + name + "不存在!"); 
    }
}


snoopy 2007-05-18 10:39 PM

很間單啊
String 類別裡面有一個 split 方法

leowang 2007-05-18 11:03 PM

不太懂耶.......
該如何來下手阿

snoopy 2007-05-19 01:01 AM

引用:

作者: leowang (文章 1718887)
不太懂耶.......
該如何來下手阿

String[] str= "this is a dog".split("\\t");
試試看這個方法

leowang 2007-05-19 11:00 AM

還是弄不出來耶
我是這樣想的 有沒有把法把一段字串以空白來做區隔
將它轉為陣列a[0] a[1] a[2]............
再將需要的部份印出來 或做其他的處理

snoopy 2007-05-19 04:23 PM

引用:

作者: leowang (文章 1719182)
還是弄不出來耶
我是這樣想的 有沒有把法把一段字串以空白來做區隔
將它轉為陣列a[0] a[1] a[2]............
再將需要的部份印出來 或做其他的處理

split 方法就是你想要的
你沒有試過嗎

leowang 2007-05-19 08:50 PM

是可以區隔啦
但只能印出s[0] 要印出s[1]就會出錯了


語法:

import java.io.*;

public class aa
{
    // 主程式
    public static void main(String[] args) throws Exception
    {
        String file = "logFile.drc";
        // 建立File物件
        File name = new File(file);
        if ( name.exists() )
        {
          // 建立BufferedReader的輸入串流物件
          BufferedReader fr = new BufferedReader(new FileReader(name));
                       
        String str;
        String s[];
 
          // 讀取資料
          while( (str = fr.readLine()) != null)
          {
                    s = str.split(" ");
              System.out.print(s[0],s[1]);<-------這行就出錯了
             
          }   
          fr.close();      // 關閉串流
        }
        else
          System.out.println("檔案[" + name + "不存在!"); 
    }
}


snoopy 2007-05-19 08:57 PM

引用:

作者: leowang (文章 1719369)
試過了
弄不出來
我弄出來只能印出a[0] 而且沒有區隔
印出來還是是整段的字串

更正一下
String[] str= "this is a dog".split("\\t");

str 就是切割完的字串陣列

leowang 2007-05-19 09:45 PM

我修改完發現列印會出錯耶

語法:

mport java.io.*;

public class aa
{
    // 主程式
    public static void main(String[] args) throws Exception
    {
        String file = "logFile.drc";
        // 建立File物件
        File name = new File(file);
        if ( name.exists() )
        {
          // 建立BufferedReader的輸入串流物件
          BufferedReader fr = new BufferedReader(new FileReader(name));
                       
        String str;
     
 
          // 讀取資料
          while( (str = fr.readLine()) != null)
          {
            String[] s= str.split(" ");
              System.out.print(s[0],s[1]);<-------這行就出錯了
 
          }   
          fr.close();      // 關閉串流
        }
        else
          System.out.println("檔案[" + name + "不存在!"); 
    }
}


snoopy 2007-05-19 10:16 PM

split 裡面放的正規表示式
regular expression
只放空白是不行的

leowang 2007-05-20 12:12 AM

引用:

作者: snoopy (文章 1719414)
split 裡面放的正規表示式
regular expression
只放空白是不行的

要放空白才能達到我的要求
我列印a[0] 可以正常的編譯
也就是說
System.out.println(a[0]);
這樣可以正常執行
但是我要列印出下一個陣列時 a[1]時就出錯了
System.out.println(a[0],a[1]);

snoopy 2007-05-20 12:51 AM

語法:

import java.io.*;

public class App {
        public static void main(String[] args) throws Exception {
                {
                        String file = "C:\\123.txt";
                        // 建立File物件
                        File name = new File(file);
                        if (name.exists()) {
                                // 建立BufferedReader的輸入串流物件
                                BufferedReader fr = new BufferedReader(new FileReader(name));

                                String str;

                                // 讀取資料
                                while ((str = fr.readLine()) != null) {
                                        String[] s = str.split("\\s+");
                                        for (int i = 0; i < s.length; i++)
                                                System.out.print(s[i]+" ");
                                        System.out.println();
                                }
                                fr.close(); // 關閉串流
                        } else
                                System.out.println("檔案[" + name + "不存在!");
                }
        }
}


leowang 2007-05-20 01:17 AM

對了順便問一下
有沒有辦法 把讀取下的東西 去作運算阿
例如:
txt檔案
12:03:02.591571 leo car sent>12:04:02.581572
.
.
.
.
把一欄跟第四欄地時間去做相減阿
因為我讀出來的形態已經是字串了

sulein1122 2007-05-27 05:07 PM

先把二個時間值讀出來,然後將字串區分為小時、分鐘、秒、毫秒後,去求得UTC時間
再將二個UTC時間求出之後相減,取得的間隔再去換算時間差就好了:on_02:

snoopy 2007-05-28 01:16 AM

java 會以一個長整數型態紀錄當前時間
就是 long
這個數字表示從 1970 年到現在經過幾毫秒
如果要讓電腦自己幫做相減
請參考
DateFormat, Date 物件
不然可以自己寫個 mthod


所有時間均為台北時間。現在的時間是 11:38 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1