如何解析/读取JAVA中.txt文件中的波形符分隔表并编写关系代数/ SQL的方法

时间:2016-11-02 00:47:13

标签: java sql relational-algebra tilde

尝试编写一个名为Algebra的java类,它将具有表示关系代数的静态方法,以及一个显示波浪表的内容并与任何波浪表一起使用的附加方法。 table将具有以下属性和限制:

- 最多12列

- 第一行代表列名

-all列是字符串

- 列值和列名限制为16个字符

但无法将所有行加载到数组或其他集合中。除了display方法之外的所有方法都返回一个表示成功或错误消息的字符串,并且对于每个成功的操作,都会在磁盘上生成一个新的波形表。所以我需要编写方法来显示表,项目操作,连接操作,限制操作(限制条件可以限制为单个条件(因此没有AND和OR)和比较器可以限制为这六个:= ,>,<,> =,< =,!=)。

因此驱动程序的主体可能如下所示:

//restrict the cars table to toyotas producing a table named toyotas

Algebra.Restrict("cars","MAKE='Toyota'","toyotas");

//project just three columns from the toyotas table producing a table named answer

Algebra.Project("Toyotas","Make,Model,Price","answer");

//display the contents of the answer table

Algebra.Display("answer");

输出将是:

MAKE MODEL PRICE

---------------- ---------------- ----------------

Toyota Camry 18000

Toyota Tacoma 19000

Toyota Highlander 35000
包含代字号表

cars.txt 的文件

MAKE~MODEL~TYPE~PRICE

Toyota~Camry~Sedan~18000

Toyota~Tacoma~Truck~19000

Ford~Mustang~Sport~21000

Chevrolet~Corvette~Sport~48000

Ford~F150~Truck~25000

Toyota~Highlander~SUV~35000

到目前为止我有什么

import java.io.*;
import java.util.*;
import javax.swing.JOptionPane;
 import javax.swing.JTable;
import javax.swing.table.DefaultTableModel; 


public class Algebra {
    public void readData() throws FileNotFoundException, IOException{


    BufferedReader in = new BufferedReader(new FileReader
        ("cars.txt"));

    String line;
    while((line = in.readLine()) !=null){
        System.out.println(line);

    }

    in.close();


    }
    /*Method used to restrict data--Using WHERE clause*/
    public void Restrict(){

    }
    /*Method used to project data--Using SELECT clause*/
    public void Project(){

    }
    /*Method used to join the data--Using JOIN clause*/
    public void Join(){

    }
    /*Display results from combination of previous methods*/
    public void Display(){

    }
}

1 个答案:

答案 0 :(得分:0)

如果唯一的要求是逐行打印文件,那么现有的readData()方法就足够了,假设为创建的FileReader对象提供了正确的文件路径。

此外,如果每行必须在4个字段中拆分,使用~作为分隔符,则以下语句(在while循环内)会生成每行4个字段的数组:

String[] fields = line.split("~");

可以通过String ~方法删除行的开头或结尾或trim()分隔符周围的空格。对于分隔符,也可以通过将split()方法中的正则表达式增强到split("\\s*~\\s*")来删除它们。