将JTable内容写入文本文件,同时在Java中保持其格式

时间:2013-03-02 05:11:38

标签: java swing file jtable

我有一个Jtable,在触发时显示以下内容。

Jtable

如何在保留原始格式的同时将其所有内容写入文本文件。文本文件看起来应该是这样的。

Line Number    Error   Solution Percentage(%)
 6               in     int       33%

这是我到目前为止所尝试的。但只有值6被写入文件。任何帮助。

我的代码(仅主要部分):

private static final String[] columnNames = {"Line Number", "Error","Solution","Percentage (%)"};
static DefaultTableModel model = new DefaultTableModel(null,columnNames);
public static void DisplayMyJList(List<CaptureErrors> x) throws IOException
{
    String [] myErrorDetails = new String[x.size()];
    int i = 0;
    int line,percentage;
    String err, sol;
    String aLine;
    StringBuffer fileContent = new StringBuffer();
    for(CaptureErrors e: x)
    {
        Vector row = new Vector();
          row.add(e.getLinenumber());
          row.add(e.getMyfounderror());
          row.add(e.getMycorrection());
          row.add(e.getMyPercentage()+"%");
          model.addRow( row );
          for (int i1 = 0; i1 < model.getRowCount(); i1++) {

                Object cellValue = model.getValueAt(i1, 0);
                // ... continue to read each cell in a row
                fileContent.append(cellValue);
                // ... continue to append each cell value


            FileWriter fileWriter = new FileWriter(new File("C:\\Users\\Antish\\Desktop\\data.txt"));
            fileWriter.write(fileContent.toString());
            fileWriter.flush();
            fileWriter.close();

    }

更新我尝试了2个循环,它给了我以下内容。我丢失了原始格式:

代码:

String separator = System.getProperty( "line.separator" );

    try
      {
            BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file,true));
            PrintWriter fileWriter = new PrintWriter(bufferedWriter);

            for(int i1=0; i1<model.getRowCount(); ++i1)
            {
                  for(int j=0; j<model.getColumnCount(); ++j)
                  {     String names = columnNames[counter];
                        String s = model.getValueAt(i1,j).toString();

                        fileWriter.print(names +"    ");
                        fileWriter.append( separator );
                        fileWriter.print(s + "    ");
                        counter ++;
                  }
                  fileWriter.println("");
            }      
            fileWriter.close();

      }catch(Exception e)
      {

enter image description here

1 个答案:

答案 0 :(得分:3)

您的代码尚未完成,但我可以看到1个,可能是2个错误:

1)你需要一个双循环,一个用于行,然后是第二个用于行中的每一列。您发布的代码只显示您从第一列获得的值,这可以解释为什么您只看到&#34; 6&#34;。

2)写入文件的代码需要在两个循环之外。现在编写代码的方式将为每一行重新创建一个新文件,这意味着文件中只有一行数据

相关问题