สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

ฟรี TUTORIAL JAVA

ฟรีtutorial JAVA 01 install Eclipse ฟรีtutorial JAVA 02 intro to programming Eclipse ฟรีtutorial JAVA 03 condiotion ฟรีtutorial JAVA 04.loop ฟรีtutorial JAVA 05.array ฟรีtutorial JAVA 05 2 array cont ฟรีtutorial JAVA 06 01 function ฟรีtutorial JAVA 06 02 function cont ฟรีtutorial JAVA 07 object ฟรีtutorial JAVA 08 string ฟรีtutorial JAVA 09 constructor ฟรีtutorial JAVA 10 01 oop ฟรีtutorial JAVA 10 02 oop2 ฟรีtutorial JAVA 11 exception ฟรีtutorial JAVA 12 reading file ฟรีtutorial JAVA 13 thread ฟรีtutorial JAVA 14 generic ฟรีtutorial JAVA 15 01 GUI ฟรีtutorial JAVA 15 02 GUI2 ฟรีtutorial JAVA 15 03.GUI3 ฟรีtutorial JAVA 16 using WindowBuilder ฟรีtutorial JAVA 17 event ฟรีtutorial JAVA 18 database management system ฟรีtutorial JAVA 19 ER diagram ฟรีtutorial JAVA 20 Relational ฟรีtutorial JAVA 21 Xampp ฟรีtutorial JAVA 22 JDBC ฟรีtutorial JAVA 23 MVC ฟรีtutorial JAVA 24 SQL ฟรีtutorial JAVA
ขอย้ำอีกครั้งว่าเนื้อหาที่เห็นอยู่นี้ไม่ใช่เนื้อหาตามปกติที่เราสอนในห้องเรียนเป็นแค่ tutorial ไว้อ่านประกอบเฉยๆ แทบไม่เกี่ยวกันเลย และไม่เกี่ยวกับการบ้านที่ทำครับ ในห้องเรียนเนื้อหาจะเยอะกว่านี้ค่อนข้างมากครับ
ขอบคุณน้องตี้ อย่างสูงสำหรับ Tutorial ดีๆ

ฟรี TUTORIAL DATA STRUCTURE

DATA STRUCTURE

ฟรีtutorial : DATA STRUCTURE : 01 1การเรียงลำดับ(Sorting) ฟรีtutorial : DATA STRUCTURE : 01 2 การเรียงลำดับ2 ฟรีtutorial : DATA STRUCTURE : 02 อาร์เรย์ลิสต์ (Array List) ฟรีtutorial : DATA STRUCTURE : 03 ลิงค์ลิสต์ (Linked List) ฟรีtutorial : DATA STRUCTURE : 04 สแต๊ค ฟรีtutorial : DATA STRUCTURE : 05 1 คิวและไพออริตี้คิว ฟรีtutorial : DATA STRUCTURE : 05 2 คิวและไพออริตี้คิว ฟรีtutorial : DATA STRUCTURE : 06 1 ไบนารีทรี ฟรีtutorial : DATA STRUCTURE : 06 2 ไบนารีเสิร์ชทรี ฟรีtutorial : DATA STRUCTURE : 06 3 ไบนารีเสิร์ชทรี ฟรีtutorial : DATA STRUCTURE : 08 แฮช ฟรีtutorial : DATA STRUCTURE : 09 กราฟ ฟรีtutorial : DATA STRUCTURE :
ขอย้ำอีกครั้งว่าเนื้อหาที่เห็นอยู่นี้ไม่ใช่เนื้อหาตามปกติที่เราสอนในห้องเรียนเป็นแค่ tutorial ไว้อ่านประกอบเฉยๆ แทบไม่เกี่ยวกันเลย และไม่เกี่ยวกับการบ้านที่ทำครับ ในห้องเรียนเนื้อหาจะเยอะกว่านี้ค่อนข้างมากครับ
ขอบคุณน้องตี้ อย่างสูงสำหรับ Tutorial ดีๆ

                                                   

การอ่านเขียนแฟ้มข้อมูล Stream I/O

            I/O คือเรื่องเกี่ยวกับการอ่านและเขียนข้อมูล รวมถึงการอ่านและเขียนข้อมูลลงบนไฟล์ ในหัวนี้จะอธิบายถึงการเขียนแบบตัวอักษรและสตริงเท่านั้น ไม่ได้รวมถึงการเขียนแบบไบต์ อย่างไรก็ตามจะเห็นได้ว่าการอ่านเขียนข้อมูลพวกนี้แทบจะไม่ได้เห็นในการเขียนโปรแกรมด้วยจาวาช่วงแรกๆเพราะจริงคือจาวาโดดเด่นเรื่องการเป็นโปรแกรมกราฟฟิค (graphically oriented programs) ไม่ใช่โปรแกรมตัวหนังสือ (text-based programs)

สตรีม

            ท่อต่อสำหรับส่งและรับข้อมูล เหมือนจะส่งน้ำก็ต้องต่อท่อที่ส่งกับที่รับน้ำ(น้ำเป็นข้อมูล) สตรีมสามารถเอาไปต่อกับอะไรก็ได้ เช่น ขาเข้า(เข้ามาหาเรา)ก็เอาไปต่อกับ ดิสก์ ไฟล์ คีย์บอร์ดและซ็อกเก็ต(network socket) ก็ได้ เพื่อดูดข้อมูลจากแหล่งที่ไปต่อมาใช้งาน ส่วนขาออก(ออกไปที่ๆอยากจะส่งไป) ก็ไปต่อกับ console ดิสก์ ไฟล์ ซ็อกเก็ต ก็ได้

 


รูป 12-1

            ท่อข้างบนเป็นท่อขาเข้าใช้สำหรับอ่านข้อมูล ส่วนท่อข้างล่างเป้นท่อขาออกสำหรับการเขียนข้อมูลออกไปข้างนอก

 

เรื่องทั่วไปของ System

            System เป็นคลาสหนึ่งของจาวาที่ใช้กันบ่อยๆก่อนหน้านี้สำหรับการรับข้อมูลเข้าทางแป้นพิมพ์จาก System.in และการให้โปรแกรมแสดงผลลัพธ์ออกทาง console ด้วย System.out.println ใน System มีตัวแปร in, out ที่ประกาศเป็น public static ดังนั้นจึงสามารถใช้งานได้เลย

            System.in เป็นอินพุตแบบมาตรฐาน โดยที่ System.in เป็นอ็อปเจ็คของ InputStream ส่วน System.out ก็เป็นเอาท์พุตแบบมาตรฐาน  เป็นอ็อปเจ็คชนิด PrintStream

การอ่านข้อมูล

            การอ่านข้อมูลสามารถทำได้ด้วยบัฟเฟอร์ดสตรีม (Buffered Stream) การอ่านเขียนข้อมูลแบบมีบัฟเฟอร์ดก็จะทำให้ประสิทธิภาพการรับส่งข้อมูลดีขึ้นกว่าไม่มี(แบบไม่มีคือใช้ Scanner แทนได้)

            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

นี่คือการเขียนบัฟเฟอร์ดเพื่อรับข้อมูลเข้าจากแป้นพิมพ์ เนื่องจากReader เป็น abstract ส่วน InputStream ไม่ได้เป็น abstract ก็เลยต้องเอา InputStream ที่เป็นคลาสลูกมาช่วยดูดข้อมูล และ System.in ก็เป็นอ็อปเจ็คของ InputStream สตรีมอีก ก็ให้เอาอ็อปเจ็บที่รับมาจากแป้นพิมพ์มาให้ InputStream หลังจากนั้นก็เก็บไว้ในตัวแปร br ของ BufferedReader

อ่าน character

Charactor คือตัวอักษรตัวเดียว ให้ใช้เมท็อด read() มาช่วยในการเก็บตัวอักษร โดย read() โยน IOException เพื่อป้องกันความผิดพลาด

int read()throws IOException

 


รูป12-2

บรรทัดที่ 3 : อิมพอร์ท java.io.*; แทนได้

บรรทัดที่ 9 : อย่าลืม throws IOException

บรรทัดที่ 12 : รับข้อมูลจากแป้นพิมพืมาใส่บัฟเฟอร์ด

บรรทัดที่ 17: ภายในลูป while ให้รับข้อมูลจนกระทั่งถ้าเป็น e ให้หยุดรับข้อมูลโดยรับข้อมูลโดย read()

 


รูป12-3

อ่านสตริง

คล้ายกับการรับข้อมูลตัวอักษรแต่เปลี่ยนเมท็อดที่ใช้เป็น readLine();

String readLine() throws IOException

 


รูป12-4

การเขียนข้อมูล

การเขียนข้อมูลหรือการส่งข้อมูลออกสามารถทำได้โดยใช้เมท็อด void write() สำหรับการเขียนข้อมูลตัวอักษรและ byte

นอกจากนี้ยังมีคลาส PrinWriter  ซึ่งก็ทำงานเหมือนๆกับ print กับ println  เขียนได้แบบนี้

PrinWriter pw = new PrinWriter(ตัวแปร.getOutputStream)

 

การอ่านและเขียนไฟล์

            หัวข้อนี้เป็นเรื่องการเขียนและอ่านแฟ้มโดยเป็นแฟ้มแบบสตริงที่เปิดอ่านด้วยNotepad ได้ ซึ่งการเขียนและอ่านไฟล์สามารถใช้ Scanner และ PrintStream ร่วมกันก็ได้หรือจะใช้

FileInputStream(String fileName) throws FileNotFoundException

FileOutputStream(String fileName) throws FileNotFoundException

และเมท็อดที่ใช้ได้ดังนี้

void close() throws IOException

int read()throws IOException

void write()throws IOException

ตัวอย่างเช่น

 


รูป 12-5

            โปรแกรมตัดเกรดจากไฟล์แล้วเซฟลงอีกไฟล์

บรรทัดที่ 10 : โปรแกรมนี้ใช้ Scanner ในการรับข้อมูล โดยมีการ new อ็อปเจ็คของไฟล์ขึ้นมาให้อ็อปเจ็คนี้ไป

เก็บข้อมูลจากพาธ(path) ตามในรูปก็คือ มีไฟล์ชื่อ score.txt ใน local disk e

 


รูป12-6

บรรทัดที่ 11 : ใช้คำสั่ง PrintStream สำหรับการเขียนข้อมูลออกไปเก็บโดยสร้างไฟล์ใหม่ขึ้นมาชื่อ grade.txt

สำหรับเก็บผลของการตัดเกรด

บรรทัดที่ 13 : ใช้เงื่อนไข while(sc.hasnext()) สำหรับการตรวจสอบว่ายังมีข้อมูลอยู่ในไฟล์หรือไม่ ถ้ามีจะคืน

ค่าจริงและทำงานต่อจนกว่าจะไม่มีข้อมูลในไฟล์ก็จะคืนค่าเท็จและออกจากลูป

บรรทัดที่ 15 : ให้เก็บข้อมูลจากอ็อปเจ็ค sc ด้วย nextLine() เพื่อเก็บข้อมูลแต่ละบรรทัดลงใน ตัวแปร person

คือเก็บข้อมูลของแต่ละคนไว้ หลังจากนั้น บรรทัดที่ 16 : ให้ใช้ trim() เพื่อตัดช่องว่างหน้าหลังออก

บรรทัดที่ 17 : ใช้ indexOf เพื่อหาช่องว่างจากตำแหน่งที่ 0 นี่เป็นเหตุผลว่าทำไมต้องใช้ trim() ก่อนเพราะ

ช่องว่างที่เราต้องการอยู่ตรงกลางเท่านั้น ต้องมั่นใจว่าจะไม่มีช่องว่างที่อื่นก่อนหน้าช่องวางตรงกลาง ดูจากรูป 12-6

บรรทัดที่ 20 : ตัด substring ก่อนช่องว่างเก็บเป็น id

บรรทัดที่ 21 : ตัด substring ครึ่งหลังเก็บเป็น คะแนน

บรรทัดที่ 22 : เอาสตริงคะแนนมาเปลี่ยนเป็น double

บรรทัดที่ 30 : ให้อ็อปเจ็คเรียก println เพื่อเก้บข้อมูลสำหรับส่งออก

บรรทัดที่ 33 : close(); ไฟล์เพื่อเซฟข้อมูลให้เรียบร้อย

ผลลัพธ์ที่ได้

ได้ไฟล์ใหม่ที่ตัดเกรดเรียบร้อยแล้ว

 


รูป 12-7



แผนผังการเรียนเขียนโปรแกรม