線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3838
推到 Plurk!
推到 Facebook!

請問..如何比對兩個檔案的內容

尚未結案
bike
一般會員


發表:5
回覆:13
積分:3
註冊:2002-12-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-19 17:30:17 IP:61.219.xxx.xxx 未訂閱
對不起..剛剛post的文章出現亂碼..重post一次^^"    我想比較兩個檔案的內容...(檔案本來是excel檔,可是我把它轉成純文字檔) 現在有兩個檔案,想找檔案一的規則是否也出現在檔案二裡頭... 例如..現在檔案一有兩個規則a→c,b→a,  檔案二有一個規則a→c, 我想比對之後,把a→c這個規則印出來.... 現在遇到的難題是..我如何取得一筆一筆的規則,而不是全部的檔案內容 我現在寫的程式,是可以用指標控制取得一筆資料,可是我要如何把這筆資料放到陣列去,然後再從陣列取出值跟另一個檔案的規則相比較?    有在網路上找到jexcel的api,可是不知道為什麼沒辦法import進去..根本就不能用... 還是說,有別的方法可以做出來?    附上我寫到一半的程式..麻煩各位高手,指出我的盲點.. import java.io.*; public class tryio { public static void main(String[] args) throws Exception { String file = "t11.txt"; RandomAccessFile input = new RandomAccessFile(file,"rw"); int ch; while ( (ch = input.read()) != -1) { //列出檔案中所有的規則 System.out.print((char)ch); } long filePointer = input.getFilePointer(); int a=0,j; input.seek(0); for (j=0;j<2;j ) { //暫印兩筆規則 while ((ch = input.read()) != ',') { //讀取每筆規則的所有字元 long aa = input.getFilePointer(); System.out.print((char)ch); //可以把ch的值放到陣列去嗎?怎麼放? a ; } System.out.print("a=" a); a=a 2; input.seek(a); } input.close(); } }
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-19 20:22:30 IP:61.56.xxx.xxx 未訂閱
小姐,你嘛說明一下你用什麼excel套件.去哪裡下載的? 斯斯有兩種.java之於excel套件也是有很多種的吶. 請明示你的套件下載的地方,以便其他大哥大姊幫你試好嗎? 發表人 - neoart 於 2004/05/19 20:26:01
bike
一般會員


發表:5
回覆:13
積分:3
註冊:2002-12-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-19 21:55:06 IP:218.166.xxx.xxx 未訂閱
引言: 小姐,你嘛說明一下你用什麼excel套件.去哪裡下載的? 斯斯有兩種.java之於excel套件也是有很多種的吶. 請明示你的套件下載的地方,以便其他大哥大姊幫你試好嗎? 發表人 - neoart 於 2004/05/19 20:26:01
抱歉...寫的不夠詳細... 我找到的網址是 http://www.andykhan.com/jexcelapi/ 我去下載這邊的API來用...編譯的時候..都說找不到... 我環境變數也有設定了啊...不知道是不是我設定錯誤... 解壓縮放在C槽底下...一個叫做jexcel的資料夾... 所以我的CLASSPATH變數就設C:\jexcel\jxl.jar 是不是有哪邊沒注意到的..麻煩各位了..謝謝
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-22 14:35:48 IP:61.56.xxx.xxx 未訂閱
sorry,看這麼久才知道你的問題跟excel一點關係都沒有.只是很單純的file read的問題 你只要用DataInpustream去一行一行地readline,加上eqaulse去比對就可以了 要不,就直接看之前有inpustream.read(byte[],int ,int)的範例 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=50063 直接以 String file1String=new String(byteSource1[]); String file2String=new String(byteSource2[]); fileString.eqauls(file2String).... 一口氣比對了. 又,如果你的設定檔內容是以Key=value的方式排列的話,那建議你用 java.util.Properties 的 load and store方式讀出/存入 I/O stream 資料放在properties中,就更有具體的意義了 參考: http://java.sun.com/j2se/1.4.2/docs/api/java/util/Properties.html#load(java.io.InputStream) 發表人 - neoart 於 2004/05/22 14:48:14
bike
一般會員


發表:5
回覆:13
積分:3
註冊:2002-12-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-25 10:54:57 IP:61.219.xxx.xxx 未訂閱
謝謝你的回覆,不過你的方法還是無法解決我的問題 由於我需要讀一筆一筆的資料,而不是讀整個檔案的資料 所以我才會用指標去指定我要的第幾筆資料,然後再去跟另一個檔案的資料比對 我已經成功使用jexcel api了,這樣就不用這麼麻煩還得設指標... 再用vector去存放讀到的資料... 這樣就可以進行多對多筆資料的比對...
系統時間:2024-05-08 19:29:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!