2013-06-28 57 views
-1

它工作正常,但我需要逐行写入数据。我从arraylis对象中得到一个数据,并想将信号线写入文本文件。第二个对象应该在下一行。使用FileWriter类从arraylist对象写入文本文件

public void writeFile() { 
    FileWriter writer = null; 
    try { 
     writer = new FileWriter("E:/AutomationToolWorkplace/AutomationTool/Test/ExpectedOutputHomescreenModule1.txt"); 
     for (String str : MP_result_set) { 
      System.out.println(""); 
      writer.write(str); 
     } 
     writer.close(); 
    } catch (IOException ex) { 
     Logger.getLogger(Transciever.class.getName()).log(Level.SEVERE, null, ex); 
    } finally { 
     try { 
      writer.close(); 
     } catch (IOException ex) { 
      Logger.getLogger(Transciever.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
} 

输出:

{"data": 
{"shared":false, 
"port":"4096", 
"packageName":"", 
"installed":false, 
"lock":false, 
"like":false, 
"type":"HomeScreen", 
"ip":"192.168.1.24", 
"screenId":"9999", 
"selected":false, 
"category":"", 
"servicetype":"", 
"price":"", 
"subscribe":false, 
"event":false, 
"subtype":"Recommended", 
"predefined":false, 
"pricingmodel":"PPC", 
"packageSelected":false}} 

{"data":{ 
"port":"4096", 
"screenId":"2050", 
"result":"failure", 
"recordList":[], 
"reminderList":[], 
"msg":"No record", 
"playList":[], 
"ip":"192.168.1.24"}} 

{"data":{ 
"port":"4096", 
"screenId":"12105", 
"result":"success", 
"list":["music","Action","Romance","Horror","Comedy","Thriller","Mystery","Drama"], 
"type":"genre", 
"ip":"192.168.1.24"}} 
+0

为什么使用Swing标签?你所说的问题没有包含Swing代码? –

+0

'MP_result_set'是一个'ArrayList '?为了澄清,你想在你的文件中用单独的行写入每个'{“data”...]',在这种情况下使用'writer.write(str +“\ n”)' – maqjav

回答

0

像这样的事情?

writer.write(str + "\n"); 
+0

它不工作....我该怎么办? – user2384525

+0

做迈克尔的解决方案。看起来很干净。 – inigoD

1

你可以简单地追加一个“\ n”来每个字符串,你写,或者使用PrintWriter

打印对象的格式化表示到一个文本输出流。

最简单的解决方法是使用Apache Commons IOUtils和IOUtils.writeLines()方法,该方法使用集合和写入器。它避免了你自己执行迭代的需要。

0

替换此:

System.out.println(""); 

与此:

writer.write("\n"); 
0

要编写语句行由行包一个BuffererdWriterFileWriter四周,使用newLine()

BufferedWriter bw = new BufferedWriter(new FileWriter(path)); 
bw.write(str); 
bw.newLine(); 

正如Piovezan指出的那样,您还应该删除System.out.println(""),因为它只会将linebreak输出到stdout而不是您的文件。

+0

完成,但最后一行不写入.... – user2384525

+0

您可以尝试在关闭写入器之前添加一个'bw.flush();'以确保将所有行写入文件 –