public class ReadWriteFormat
{
    public static void main(String[] args)
    {
        Vector v = new Vector();
        v = readFile("E:\\TEMP\\temp.txt");
        for (int i = 0; i < v.size(); i++)
        {
            Record_Struct rStruct = (Record_Struct) v.get(i);
            System.out.println(rStruct.getColumn_1());
            System.out.println(rStruct.getColumn_2());
            System.out.println(rStruct.getColumn_3());
            System.out.println(rStruct.getColumn_4());
        }
    }    private boolean processData(Vector vector, Connection connection)
    {
        if (vector == null || vector.size() ==0) return false;        boolean rtnValue = false;
        Record_Struct rStruct = new Record_Struct();
        PreparedStatement stmt = null;        try
        {
            stmt = connection.prepareStatement("SQL_CLAUSE");
            for (int i = 0; i < vector.size(); i++)
            {
                rtnValue = true;
                rStruct = (Record_Struct) vector.get(i);
                System.out.println(rStruct.getColumn_2());
                stmt.setString(1, rStruct.getColumn_2());
                stmt.setString(2, rStruct.getColumn_3());
                if (stmt.executeUpdate() <= 0)
                {
                    rtnValue = false;
                    System.out.println("Error occurs @line: ".concat("" + i).concat("!"));
                    break;
                }
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace();
            rtnValue = false;
        }
        finally
        {
            try
            {
                if (stmt != null)
                {
                    stmt.close();
                    stmt = null;
                }
                if (connection != null)
                {
                    connection.close();
                    connection = null;
                }
            }
            catch (SQLException e)
            {
            }
            finally
            {
                return rtnValue;
            }
        }
    }    public static String trim(String string)
    {
        String rtnValue = string;        while (rtnValue.indexOf(' ') == 0)
        {
            rtnValue = rtnValue.substring(1);
        }        while (rtnValue.indexOf(' ', rtnValue.length() - 1) == rtnValue.length() - 1)
        {
            rtnValue = rtnValue.substring(0, rtnValue.length() - 2);
        }        return rtnValue;
    }    public static Vector readFile(String fileName)
    {
        Record_Struct rStruct = new Record_Struct();
        Vector vStruct = new Vector();
        File targetFile = null;
        BufferedReader br = null;
        RandomAccessFile dataFile = null;
        String s = String.valueOf("");
        char[] c = new char[1];
        int rowLocalizer = 0;
        int rowReal = 0;
        int columnLocalizer = 0;        try
        {
             targetFile = new File(fileName);
             dataFile = new RandomAccessFile(targetFile, "r");
             br = new BufferedReader(new InputStreamReader(new
                 FileInputStream(dataFile.getFD())));            /**
             * System.out.println(saleFileContent);
             * StringReader reader = new StringReader(saleFileContent);
             * br = new BufferedReader(reader);
             */            while (br.read(c) != -1)
            {
                if (c[0] == FIELD_SEPARATE)
                {
                    switch (columnLocalizer)
                    {
                        case 0:
                            rStruct.setColumn_1(trim(s));
                            break;
                        case 1:
                            rStruct.setColumn_2(trim(s));
                            break;
                        case 2:
                            rStruct.setColumn_3(trim(s));
                            break;
                        case 3:
                            rStruct.setColumn_4(trim(s));
                            break;
                        default:
                            break;
                    }
                    columnLocalizer++;
                    s = String.valueOf("");
                }
                else if (c[0] == '\r')
                {
                    String temp = "" + c[0];
                    if (br.read(c) != -1)
                    {
                        temp += c[0];
                        if (temp.equalsIgnoreCase(RECORD_SEPARATE))
                        {
                            if (rStruct.getColumn_1() != ""
                                && rStruct.getColumn_2() != ""
                                && rStruct.getColumn_3() != ""
                                && rStruct.getColumn_4() != "")
                            {
                                vStruct.add(rStruct);
                                rStruct = new Record_Struct();
                                columnLocalizer = 0;
                                rowLocalizer++;
                                rowReal++;
                            }
                            else if (rStruct.getColumn_1() == ""
                                     && rStruct.getColumn_2() == ""
                                     && rStruct.getColumn_3() == ""
                                     && rStruct.getColumn_4() == "")
                            {
                                System.out.println("BLANK LINE");
                                rStruct = new Record_Struct();
                                rowReal++;
                                columnLocalizer = 0;
                            }
                            else
                            {
                                System.out.println("READ RECORD ERROR @Line: " + rowReal);
                                rStruct = new Record_Struct();
                                columnLocalizer = 0;
                                vStruct = null;
                                break;
                            }
                        }
                    }
                }
                else if (c[0] == '\n')
                {
                    System.out.println("-n");
                }
                else
                {
                    s += c[0];
                }
            }
            System.out.println(rowLocalizer);
        }
        catch (IOException e)
        {
            e.printStackTrace();
            vStruct = null;
        }
        finally
        {
            return vStruct;
        }
    }    private static final char FIELD_SEPARATE = ';';
    private static final String RECORD_SEPARATE = "\r\n";
}

解决方案 »

  1.   

    class Record_Struct
    {
        private String column_1 = "";
        private String column_2 = "";
        private String column_3 = "";
        private String column_4 = "";    public String getColumn_1()
        {
            return column_1;
        }    public String getColumn_2()
        {
            return column_2;
        }    public String getColumn_3()
        {
            return column_3;
        }    public String getColumn_4()
        {
            return column_4;
        }    public void setColumn_1(String string)
        {
            column_1 = string;
        }    public void setColumn_2(String string)
        {
            column_2 = string;
        }    public void setColumn_3(String string)
        {
            column_3 = string;
        }    public void setColumn_4(String string)
        {
            column_4 = string;
        }
    }
      

  2.   

    程序中的字段分隔符是“;”,替换成Tab键的ASCII码即可。
    写入数据库的部分需自己改动。
      

  3.   

    谢谢!这几天内结贴.可以知道你的Email吗?
      

  4.   

    用:
    StringTokenizer st=new StringTokenizer(string,"\t");
    while(st.hasMoreTokens){
     st.nextToken();
      ......
    }