我有一个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)
{
答案 0 :(得分:3)
您的代码尚未完成,但我可以看到1个,可能是2个错误:
1)你需要一个双循环,一个用于行,然后是第二个用于行中的每一列。您发布的代码只显示您从第一列获得的值,这可以解释为什么您只看到&#34; 6&#34;。
2)写入文件的代码需要在两个循环之外。现在编写代码的方式将为每一行重新创建一个新文件,这意味着文件中只有一行数据