2013-03-02 71 views
-1

我有一个Jtable,它在触发时显示以下内容。将JTable内容写入文本文件,同时保持Java格式

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

+0

您需要编写格式化输出,并且可以使用PrintWriter的'printf(...)'方法。您可以通过阅读[java.util.Formatter API](http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html)或Google搜索来了解如何使用它。 – 2013-03-02 05:18:40

回答

3

您的代码是不完整的,但我可以看到1,也许2错误:

1)你需要一个双循环,一个用于行,然后第二个用于该行中的每一列。您发布的代码仅显示您从第一列获取值,这将解释为什么您只看到“6”。

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

+0

我更新了代码,但可以帮助我更正Formatting.Thanks – 2013-03-02 05:48:47

+0

@Ms_Joe,我认为您应该编程并考虑一下您的逻辑。标题只能写出一次。所以在开始循环所有行之前应该写出它们。我不知道你为什么有一个计数器变量。行/列已经有两个变量。 – camickr 2013-03-02 05:56:45

+1

@Ms_Joe:不要直接用FileWriter写。为什么你会忽略我使用PrintWriter的'printf'方法的建议?您几乎从不想直接写入这样的低级作家,而是想将其封装在更高级别的作家(如PrintWriter)中。 – 2013-03-02 05:57:05