การปรับปรุงแฟ้มข้อความ

การปรับปรุงแฟ้มข้อความ

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

 

คลาสที่เกี่ยวข้องกับการอ่านแฟ้มข้อมูล

      FileReader fin = new FileReader(“input.txt”);

      BufferedReader bin = new BufferedReader (fin);

คลาสที่เกี่ยวข้องกับการเขียนลงแฟ้มข้อมูล

FileOutputStream fout = new FileOutputStream(“output.txt”);

BufferedOutputStream bout = new BufferedOutputStream(fout,1024);

PrintStream pout = new PrintStream(bout);

ตัวอย่าง 7.29 การสร้างแฟ้มและเพิ่มข้อมูลทีละตัวอักษร

– คลาส FileOutputStream ไม่มี print หรือ println ให้ใช้

import java.io.*;

class x {

public static void main (String args[]) throws IOException {

    FileOutputStream fout = new FileOutputStream(“d.txt”);

    fout.write(‘a’);

    fout.write(65);  // A

    fout.close();

}

}

ตัวอย่าง 7.30 การสร้างแฟ้มและเพิ่มข้อมูลทีละอาร์เรย์

import java.io.*;

class x {

public static void main (String args[]) throws IOException {

    byte a[] = {‘a’,’b’,’c’,’d’,’e’};

    FileOutputStream fout = new FileOutputStream(“d.txt”);

    fout.write(a);

    fout.close();

}

}

ตัวอย่าง 7.31 การสร้างแฟ้มและเพิ่มข้อมูลทีละบรรทัด

import java.io.*;

class x {

public static void main (String args[]) throws IOException {

    FileOutputStream fout = new FileOutputStream(“d.txt”);

    PrintStream pout = new PrintStream(fout);

    pout.println(“101,Mr.Koanchanok Narittom,2500”);

    pout.println(“102,Ms.Kyle Burin,10000”);

pout.close();

}

}

ตัวอย่าง 7.32 การสร้างแฟ้มและเพิ่มข้อมูลทีละบรรทัด

import java.io.*;

class x {

public static void main (String args[]) throws IOException {

    FileOutputStream fout = new FileOutputStream(“d.txt”);

    BufferedOutputStream bout = new BufferedOutputStream(fout,1024);

    PrintStream pout = new PrintStream(bout);

    pout.println(“101,Mr.Koanchanok Narittom,2500”);

    pout.println(“102,Ms.Kyle Burin,10000”);

    pout.println(“103,Ms.Sala Romeo,55000”);

    pout.println(“104,Mr.Jib Jibjib,1000”);

    pout.println(“105,Ms.Maya Noar,3500”);

pout.close();

System.out.println(“Create 5 records : completely”);

}

}

ตัวอย่าง 7.33 การเพิ่มข้อมูล

import java.io.*;

class x {

public static void main (String args[]) throws IOException {

    String bufid =123“;

    String bufname=”tom”;

    String bufsalary=”5000″;

    String b;

    String ar[] = new String[10];

    FileReader fin = new FileReader(“d.txt”);

    BufferedReader bin = new BufferedReader (fin);

    int i = 0;

    while ((b =  bin.readLine()) != null) {     

      ar[i] = b;

      i = i + 1;

    }   

    fin.close();

int tot = i;

//

    FileOutputStream fout = new FileOutputStream(“d.txt”);

    BufferedOutputStream bout = new BufferedOutputStream(fout,1024);

    PrintStream pout = new PrintStream(bout);

    i = 0;

    while (i < tot) {     

      pout.println(ar[i]);    

      i = i + 1;

    }

    pout.println(bufid + “,” + bufname + “,” + bufsalary);

    pout.close();

System.out.println(“Insert : completely”);

}

}

ตัวอย่าง 7.34 การลบข้อมูล

import java.io.*;

class x {

public static void main (String args[]) throws IOException {

    String bufid = “123”;

    String b;

    String ar[] = new String[10];

    FileReader fin = new FileReader(“d.txt”);

    BufferedReader bin = new BufferedReader (fin);

    int i = 0;

    while ((b =  bin.readLine()) != null) {     

      ar[i] = b;

      i = i + 1;

    }   

    fin.close();

int tot = i;

//

    FileOutputStream fout = new FileOutputStream(“updtxt.dat”);

    BufferedOutputStream bout = new BufferedOutputStream(fout,1024);

    PrintStream pout = new PrintStream(bout);

    i = 0;

    while (i < tot) {     

      if (bufid.equals(ar[i].substring(0,3))) {

        System.out.println(“Delete : completely”);

      } else {

        pout.println(ar[i]);

      }

      i = i + 1;

    }

    pout.close();

System.out.println(“Delete : completely”);

 

}

}

ตัวอย่าง 7.35 การแก้ไขข้อมูล

import java.io.*;

class x {

public static void main (String args[]) throws IOException {

String bufid =”123″;

String bufname=”newtom”;

String bufsalary=”10000″;

String b;

String ar[] = new String[10];

    FileReader fin = new FileReader(“d.txt”);

    BufferedReader bin = new BufferedReader (fin);

    int i = 0;

    while ((b =  bin.readLine()) != null) {     

      ar[i] = b;

      i = i + 1;

    }   

    fin.close();

int tot = i;

//

    FileOutputStream fout = new FileOutputStream(“d.txt”);

    BufferedOutputStream bout = new BufferedOutputStream(fout,1024);

    PrintStream pout = new PrintStream(bout);

    i = 0;

    while (i < tot) {     

      if (bufid.equals(ar[i].substring(0,3))) {

        pout.println(bufid + “,” + bufname + “,” + bufsalary);

        System.out.println(“Update : completely”);

      } else {

        pout.println(ar[i]);

      }

      i = i + 1;

    }

    pout.close();

}

}

ตัวอย่าง 7.36 การปรับปรุงข้อมูลที่เชื่อมโยงผ่านระบบเมนู

import java.io.*;

import java.lang.*;

import java.util.regex.*; // ใช้ class Pattern และ Matcher เพื่อแทนที่ตัวอักษร

class updtxt {

  static BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));  

// โปรแกรมหลักที่เริ่มทำงานและคุมการทำงานทั้งหมด

public static void main(String args[]) throws IOException {

String waitopt;

String buf;

waitopt=”Wait your choice [menu, bye, 0, 1, 2, 3, 4, 5, 6, 7, 8] : “;

displaymenu();

System.out.print(waitopt);

buf = stdin.readLine();

while (!buf.equals(“0”)) {

if (buf.equals(“0”) || buf.equals(“bye”)) {

System.out.println(“Bye Bye”);

break;

} else if (buf.equals(“1″)) {

create5();

buf = ” “;

} else if (buf.equals(“2”) || buf.equals(“l”)) {

list(“updtxt.dat”);

buf = ” “;

} else if (buf.equals(“3″)) {

listnum();

buf = ” “;

} else if (buf.equals(“4″)) {

converttohtm();

buf = ” “;

} else if (buf.equals(“5”) || buf.equals(“e”)) {

editnamesalary();

buf = ” “;

} else if (buf.equals(“6”) || buf.equals(“d”)) {

deleteonid();

buf = ” “;

} else if (buf.equals(“7”) || buf.equals(“a”)) {

addnew();

buf = ” “;

} else if (buf.equals(“8”) || buf.equals(“s”)) {

totalsalary();

buf = ” “;

} else if (buf.equals(“menu”) || buf.equals(“m”)) {

displaymenu();

buf = ” “;

} else {

System.out.print(waitopt);

buf = stdin.readLine();

// buf = (char)System.in.read(); // for 1 character

}

}

}

// แสดงตัวเลือก

static void displaymenu () {

System.out.println(“0 : bye bye”);

System.out.println(“1 : Create 3 fields, 5 records for updtxt.dat”);

System.out.println(“2 : List all records”);

System.out.println(“3 : List with line numbers”);

System.out.println(“4 : Convert updtxt.dat to updtxt.htm”);

System.out.println(“5 : Edit name, salary on id”);

System.out.println(“6 : Delete on id”);

System.out.println(“7 : Add new record”);

System.out.println(“8 : Total salary”);

}

// สร้างแฟ้มและระเบียนตัวอย่าง 5 ระเบียน

public static void create5 () throws IOException {

FileOutputStream fout = new FileOutputStream(“updtxt.dat”);

BufferedOutputStream bout = new BufferedOutputStream(fout,1024);

PrintStream pout = new PrintStream(bout);

pout.println(“101,Mr.Koanchanok Narittom,2500”);

pout.println(“102,Ms.Kyle Burin,10000”);

pout.println(“103,Ms.Sala Romeo,55000”);

pout.println(“104,Mr.Jib Jibjib,1000”);

pout.println(“105,Ms.Maya Noar,3500”);

System.out.println(“Create 5 records : completely”);

pout.close();

}

// อ่านระเบียนข้อมูลมาแสดงผล

public static void list (String f) throws IOException {

int n = 0;

byte b[] = new byte[128];

FileInputStream fin = new FileInputStream(f);

while ((n = fin.read(b)) != -1) {

for(int i=0;i<n;i++) {

System.out.print((char)b[i]);

}

}

fin.close();

}

// อ่านระเบียนข้อมูลมาแสดง โดยรับชื่อแฟ้มจากแป้นพิมพ์ และแสดงเลขบรรทัด

public static void listnum () throws IOException {

String buf;

System.out.print(“Wait filename to listing : “);

buf = stdin.readLine();

int n = 0;

int l = 1;

byte b[] = new byte[125];

FileInputStream fin = new FileInputStream(buf);

System.out.print(l + ” : “);

l = l + 1;

while ((n = fin.read(b)) != -1) {

for(int i=0;i<n;i++) {

if (b[i] != 13) {

if (b[i] == 10) {

System.out.println();

System.out.print(l + ” : “);

l = l + 1;

} else System.out.print((char)b[i]);

}

}

}

fin.close();

System.out.println();    System.out.println(“======”);

}

// อ่านระเบียนข้อมูลแล้วเขียนลงแฟ้มใหม่ในรูปของ HTML

public static void converttohtm () throws IOException {

int i = 1;

String b;

//

FileReader fin = new FileReader(“updtxt.dat”);

BufferedReader bin = new BufferedReader (fin);

// in j0605.java will use character

FileOutputStream fout = new FileOutputStream(“updtxt.htm”);

BufferedOutputStream bout = new BufferedOutputStream(fout,1024);

PrintStream pout = new PrintStream(bout);

//

pout.println(“<style type=’text/css’>”);

pout.println(“td{font-family:fixedsys;font-size:10pt;}”);

pout.println(“</style>”);

pout.println(“<body bgcolor=red><table width=90% bgcolor=yellow>”);

while ((b =  bin.readLine()) != null) {

// String bnew = b.replace(‘a’, ‘A’);

Pattern pattern = Pattern.compile(“&”);

Matcher matcher = pattern.matcher(b);

b = matcher.replaceAll(“&#38;”);

//

pattern = Pattern.compile(“>”);

matcher = pattern.matcher(b);

b = matcher.replaceAll(“&gt;”);

//

pattern = Pattern.compile(“<“);

matcher = pattern.matcher(b);

b = matcher.replaceAll(“&lt;”);

//

pattern = Pattern.compile(” “);

matcher = pattern.matcher(b);

b = matcher.replaceAll(“&nbsp;”);

pout.println(“<tr>”);

pout.println(“<td>”+i+”</td>”);

pout.println(“<td>”+b+”</td>”);

pout.println(“</tr>”);

i = i + 1;

}

pout.println(“</table></body>”);

fin.close();

pout.close();

System.out.println(“Use IE to open updtxt.htm”);

}

// แก้ไขเงินชื่อและเงินเดือนตามรหัส

public static void editnamesalary () throws IOException {

String bufid,bufname,bufsalary;

System.out.print(“Wait id : “);

bufid = stdin.readLine();

System.out.print(“Wait name : “);

bufname = stdin.readLine();

System.out.print(“Wait salary : “);

bufsalary = stdin.readLine();

String b;

String ar[] = new String[10];

FileReader fin = new FileReader(“updtxt.dat”);

BufferedReader bin = new BufferedReader (fin);

int i = 0;

while ((b =  bin.readLine()) != null) {

ar[i] = b;

i = i + 1;

}

fin.close();

//

int tot = i;

FileOutputStream fout = new FileOutputStream(“updtxt.dat”);

BufferedOutputStream bout = new BufferedOutputStream(fout,1024);

PrintStream pout = new PrintStream(bout);

i = 0;

while (i < tot) {

if (bufid.equals(ar[i].substring(0,3))) {

pout.println(bufid + “,” + bufname + “,” + bufsalary);

System.out.println(“Update : completely”);

} else {

pout.println(ar[i]);

}

i = i + 1;

}

pout.close();

}

// ลบข้อมูลตามรหัส

public static void deleteonid () throws IOException {

String bufid;

System.out.print(“Wait id : “);

bufid = stdin.readLine();

String b;

String ar[] = new String[10];

FileReader fin = new FileReader(“updtxt.dat”);

BufferedReader bin = new BufferedReader (fin);

int i = 0;

while ((b =  bin.readLine()) != null) {

ar[i] = b;

i = i + 1;

}

fin.close();

//

int tot = i;

FileOutputStream fout = new FileOutputStream(“updtxt.dat”);

BufferedOutputStream bout = new BufferedOutputStream(fout,1024);

PrintStream pout = new PrintStream(bout);

i = 0;

while (i < tot) {

if (bufid.equals(ar[i].substring(0,3))) {

System.out.println(“Delete : completely”);

} else {

pout.println(ar[i]);

}

i = i + 1;

}

pout.close();

}

// เพิ่มข้อมูลใหม่

public static void addnew () throws IOException {

String bufid,bufname,bufsalary;

System.out.print(“Wait id : “);

bufid = stdin.readLine();

System.out.print(“Wait name : “);

bufname = stdin.readLine();

System.out.print(“Wait salary : “);

bufsalary = stdin.readLine();

String b;

String ar[] = new String[10];

FileReader fin = new FileReader(“updtxt.dat”);

BufferedReader bin = new BufferedReader (fin);

int i = 0;

while ((b =  bin.readLine()) != null) {

ar[i] = b;

i = i + 1;

}

fin.close();

//

int tot = i;

FileOutputStream fout = new FileOutputStream(“updtxt.dat”);

BufferedOutputStream bout = new BufferedOutputStream(fout,1024);

PrintStream pout = new PrintStream(bout);

i = 0;

while (i < tot) {

pout.println(ar[i]);

i = i + 1;

}

pout.println(bufid + “,” + bufname + “,” + bufsalary);

System.out.println(“Insert : completely”);

pout.close();

}

// แสดงผลรวมเงินเดือน

public static void totalsalary () throws IOException {

String b,fld[];

FileReader fin = new FileReader(“updtxt.dat”);

BufferedReader bin = new BufferedReader (fin);

int i = 0,total = 0;

while ((b =  bin.readLine()) != null) {

fld = b.split(“,”);

total = total + Integer.parseInt(fld[2]);

i = i + 1;

}

fin.close();

System.out.println(“Total salary = ” + total);

}

}