Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,032

HOME > Java Programming > Java Forum > Java - รบกวนสอบถาม และวิธีการ หากเราต้องการอ่านไฟล์และเปรียบเทียบข้อมูลแต่ละบรรทัดเหมือนกันหรือไม่



 

Java - รบกวนสอบถาม และวิธีการ หากเราต้องการอ่านไฟล์และเปรียบเทียบข้อมูลแต่ละบรรทัดเหมือนกันหรือไม่

 



Topic : 109583



โพสกระทู้ ( 16 )
บทความ ( 0 )



สถานะออฟไลน์




หากเราต้องการอ่านไฟล์ และเปรียบเทียบข้อมูลแต่ละบรรทัดเหมือนกันหรือไม่ ต้องทำอย่างไรครับ

ขอบคุณครับ



Tag : Java, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-06-30 15:23:45 By : nattawat22 View : 1665 Reply : 11
 

 

No. 1



โพสกระทู้ ( 9,569 )
บทความ ( 2 )



สถานะออฟไลน์


ลอง search ใน internet ดูครับ มีหลายวิธีเลยครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-30 20:10:08 By : Chaidhanan
 


 

No. 2



โพสกระทู้ ( 11 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตัวอย่าง code ประมาณนี้
เช็คว่าบรรทัดที่ 1 ซ้ำกับบรรทัดไหนบ้าง
ถ้าสงสัยถามเพิ่มได้คับ

Code (Java)
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;

public class LineCompare {
	
	public static void main(String[] args){
		try{
			File file = new File("c:/temp/myfile.txt");
			BufferedReader reader = new BufferedReader(new FileReader(file));
			String line = null;
			ArrayList<String> allLineArray = new ArrayList<String>();
			while ( (line=reader.readLine()) != null){
				allLineArray.add(line);
			}
			reader.close();
			String firstLine = allLineArray.get(0);
			for (int i=1;i<allLineArray.size();i++){
				String nextLine = allLineArray.get(i);
				if (firstLine.equals(nextLine)){
					System.out.println("Line#1 duplcate with line#"+i);
				}
			}
		}
		catch(Exception ex){
			ex.printStackTrace();
		}
	}
}


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-30 20:43:29 By : binary.prep
 

 

No. 3



โพสกระทู้ ( 16 )
บทความ ( 0 )



สถานะออฟไลน์


ข้อมูลของผมที่อยู่ในไฟล์ จะมีลักษณะแบบนี้ครับ หากสังเกตดูแล้ว แต่ละบรรทัดจะมีข้อมูลเหมือนกัน แต่จะสลับตำแหน่งกันครับ จะมีวิธีการอย่างไรในการตรวจสอบครับ
ip_src=2886758405 ip_dst=2886729729 ip_tos=0 ip_off=0 ip_ttl=32 icmp_type=8 icmp_code=0 icmp_id=8 ==> ip_flags=0
ip_src=2886758405 ip_dst=2886729729 ip_tos=0 ip_flags=0 ip_off=0 ip_ttl=32 icmp_type=8 icmp_id=8 ==> icmp_code=0
ip_src=2886758405 ip_dst=2886729729 ip_tos=0 ip_flags=0 ip_off=0 ip_ttl=32 icmp_code=0 icmp_id=8 ==> icmp_type=8
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-01 14:23:49 By : nattawat22
 


 

No. 4



โพสกระทู้ ( 11 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ขอรายละเอียดอีกหน่อยคับ
ต้องการหาว่าอะไรแตกต่างจากอะไร? เท่าที่ดูทุกบรรทัดต่างกันหมด
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-01 22:01:36 By : binary.prep
 


 

No. 5



โพสกระทู้ ( 16 )
บทความ ( 0 )



สถานะออฟไลน์


คือ ผมต้องการเปรียบเทียบแต่ละบรรทัดในไฟล์เดียวกัน ถ้าบรรทัดไหนมีข้อมูลต่างจากบรรทัดอื่นให้นำมาแสดงผล ครับ

บังเอิญว่าไปเจอ code นี้มาครับ แต่ไม่มี class main มาให้ ผมก็เลยงง ว่าจะสร้าง class main ยังงัยครับ

Code (Java)
import java.io.IOException;
import java.io.LineNumberReader;
import java.io.Reader;
import java.util.List;


public class Diff
{
    public static void readersAsText(Reader r1, String name1, Reader r2, String name2,
        List diffs)
        throws IOException
    {
        LineNumberReader reader1 = new LineNumberReader(r1);
        LineNumberReader reader2 = new LineNumberReader(r2);
        String line1 = reader1.readLine();
        String line2 = reader2.readLine();
        while (line1 != null && line2 != null)
        {
            if (!line1.equals(line2))
            {
                diffs.add("File \"" + name1 + "\" and file \"" +
                    name2 + "\" differ at line " + reader1.getLineNumber() +
                    ":" + "\n" + line1 + "\n" + line2);
                break;
            }
            line1 = reader1.readLine();
            line2 = reader2.readLine();
        }
        if (line1 == null && line2 != null)
            diffs.add("File \"" + name2 + "\" has extra lines at line " +
                reader2.getLineNumber() + ":\n" + line2);
        if (line1 != null && line2 == null)
            diffs.add("File \"" + name1 + "\" has extra lines at line " +
                reader1.getLineNumber() + ":\n" + line1);
    }
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-02 11:28:37 By : nattawat22
 


 

No. 6



โพสกระทู้ ( 16 )
บทความ ( 0 )



สถานะออฟไลน์


ตัวอย่างของข้อมูลที่อยู่ในไฟล์ เช่น

a b c d e f
e f g h i j k
a b c d e f
b a d c e f
e f a c j h
h f a c e j

ผลลัพธ์ ที่ต้องการ เมื่อรันโปรแกรม
a b c d e f
e f g h i j k
e f a c j h
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-02 11:44:41 By : nattawat22
 


 

No. 7



โพสกระทู้ ( 11 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

จากตัวอย่างโค้ดที่ให้มาถ้าเราต้องการจะเขียน main class เพื่อเรียก method readersAsText ของ class Diff
สามารถทำได้หลายแบบ ที่ผมทำคือผมตั้งชื่อ class ใหม่ชื่อ CallDiff

Code (Java)
import java.io.FileReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

public class CallDiff {
	public static void main(String[] args){
		try{
			String fileName1 = "c:/temp/file1.txt";
			String fileName2 = "c:/temp/file2.txt";
			Reader reader1 = new FileReader(fileName1);
			Reader reader2 = new FileReader(fileName1);
			List<String> diffResult = new ArrayList<String>();
			Diff.readersAsText(reader1, fileName1, reader2, fileName2, diffResult);
			for (String result : diffResult){
				System.out.println(result+"\n");
			}
		}
		catch(Exception ex){
			ex.printStackTrace();			
		}
	}
}



แต่ดูเหมือน class Diff ที่คุณ Avatar เจอในเน็ตจะใช้สำหรับ compare file 2 file
เลยไม่แน่ใจว่าจะตอบโจทย์ที่คุณ Avatar ตั้งไว้ตอนแรกหรือเปล่า

ส่วนตัวอย่าง ผลลัพธ์ ที่แนบมาให้ดู ผมงงอย่างแรง ถ้าโจทย์คือต้องการหาบรรทัดที่ diff
บรรทัดที่ 4 (b a d c e f) ก็ไม่ซ้ำกับใครเลย แต่ทำไมไม่อยู่ในผลลัพธ์ อะคับ?
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-02 16:52:57 By : binary.prep
 


 

No. 8



โพสกระทู้ ( 16 )
บทความ ( 0 )



สถานะออฟไลน์


ตัวอย่างของข้อมูลที่อยู่ในไฟล์ เช่น

a b c d e f
e f g h i j k
a b c d e f
b a d c e f
e f a c j h
h f a c e j

ผลลัพธ์ ที่ต้องการ เมื่อรันโปรแกรม
a b c d e f
e f g h i j k
e f a c j h

จากตัวอย่างข้อมูลที่อยู่ในไฟล์ และผลลัพธ์ที่ออกมา คือว่า เราจะเอาเฉพาะบรรทัดที่มีข้อมูลไม่ซ้ำกับบรรทัดอื่นมาแสดงผล ครับ

ตัวอย่างของ Code ครับ

public class CrunchifyUniqueArrayList {

private static ArrayList<String> listLine = new ArrayList<String>();

public static void main(String[] args) throws FileNotFoundException, IOException {
File file = new File("C:\\Users\\Hadoop\\Documents\\Data Apriori\\icmp_full3.txt");
FileReader fr = new FileReader(file);
LineNumberReader lnr = new LineNumberReader(fr);

String line = "";
while ((line = lnr.readLine()) != null) {
listLine.add(line);
}
for (int x = 0; x < listLine.size(); x++) {
System.out.println(listLine.get(x));
}
}
}
ผลลัพธ์เมื่อ Run ครับ
a b c d e f
e f g h i j k
a b c d e f
b a d c e f
e f a c j h
h f a c e j

ตอนนี้อ่านข้อมูลออกมาได้ทุกบรรทัดแล้วครับ แต่ยังไม่สามารถที่จะเปรียบเทียบข้อมูลแต่ละบรรทัดได้ ครับ

รบกวนด้วยนะครับ ขอบพระคุณครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-03 10:51:38 By : nattawat22
 


 

No. 9



โพสกระทู้ ( 16 )
บทความ ( 0 )



สถานะออฟไลน์


สำหรับบรรทัดที่ 4 จะมีข้อมูลเหมือนกับบรรทัดที่ 1 ครับ ซึ่งถือว่าเป็นข้อมูลชุดเดียวกันครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-03 14:43:45 By : nattawat22
 


 

No. 10



โพสกระทู้ ( 11 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ลองอันนี้ดูครับ ได้ไม่ได้ยังงัยแจ้งผลด้วยนะครับ
Code (Java)
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;

public class LineCompare {
	static ArrayList<String[]> allPattens = new ArrayList<String[]>();

	public static void main(String[] args) {
		try {
			File file = new File("c:/windows/temp/ip_log.txt");
			BufferedReader reader = new BufferedReader(new FileReader(file));
			String line = null;

			int lineNo = 0;
			while ((line = reader.readLine()) != null) {
				lineNo++;
				String[] values = line.split(" ");
				if (!isSame(values)) {
					System.out.println("line#" + lineNo + "=>" + line);
					allPattens.add(values);
				}
			}
			reader.close();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	public static boolean isSame(String[] values) {
		boolean same = false;
		if (allPattens == null || allPattens.size() <= 0) {
			return false;
		}
		for (String[] patterns : allPattens) {
			if (patterns.length != values.length) {
				continue;
			}
			int sameCount = 0;
			for (int i = 0; i < patterns.length; i++) {
				for (int j = 0; j < values.length; j++) {
					if (patterns[i].equals(values[j])) {
						sameCount++;
					}
				}
			}
			if (sameCount == patterns.length) {
				return true;
			}
		}
		return same;
	}
}


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-04 00:55:02 By : binary.prep
 


 

No. 11



โพสกระทู้ ( 16 )
บทความ ( 0 )



สถานะออฟไลน์


ขอขอบพระคุณเป็นอย่างสู.ครับ ที่ได้ช่วยเหลือและให้คำปรึกษาและได้ทำการโปรแกรมให้เป็นตัวอย่าง

ตอนนี้สามารถ รันโปรแกรมได้ แล้วครับ

ขอขอบพระคุณอีกครั้งครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-04 09:20:22 By : nattawat22
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : Java - รบกวนสอบถาม และวิธีการ หากเราต้องการอ่านไฟล์และเปรียบเทียบข้อมูลแต่ละบรรทัดเหมือนกันหรือไม่
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่