与\ n

2012-01-04 24 views
0

更换广场我有一个方法,从一个JTextArea获取文本并保存在一个txt文件。 这一切工作正常,但文本保存在空空的小方块代替\ n直线。 我想用\ n来替代这些广场与 n

我的代码是:

public void createTxt(){ 

TxtFilter txt = new TxtFilter(); 

JFileChooser fSave = new JFileChooser(); 

fSave.setFileFilter(txt); 
int result = fSave.showSaveDialog(this); 
if(result == JFileChooser.APPROVE_OPTION){ 
    File sFile = new File(fSave.getSelectedFile()+ ".txt"); 

    String file_name = sFile.getName(); 
    String file_path = sFile.getParent(); 

    try{ 
     if(!sFile.exists()){ 

      BufferedWriter out = new BufferedWriter(new FileWriter(sFile)); 

      FileReader fr = new FileReader(jTextArea1.getText()); 
      BufferedReader br = new BufferedReader(fr); 

      String line = ""; 

      while((line = br.readLine())!= null){ 
      line = line.replace("o", "\n"); 
      out.write(line); 
      } 
      out.close(); 

      JOptionPane.showMessageDialog(null, "Warning file • " + file_name + " • created succesfully in \n" + file_path);  
     } 

     else{ 

一定有什么错误的,因为它创建的txt文件,但它始终是empy,没有文字是由JTextArea中得到和我总是有例外,因为从

catch(IOException e){ 
     System.out.println("Error"); 
    } 

错误在哪里?如何修改代码?

PS我已经“O”写的,而不是空方,因为我不知道该写什么,以替换第一个字符串(或字符)。

由于

加了:的printStackTrace

java.io.FileNotFoundException: sdfdsf (Impossibile trovare il file specificato) 
at java.io.FileInputStream.open(Native Method) 
at java.io.FileInputStream.<init>(FileInputStream.java:106) 
at java.io.FileInputStream.<init>(FileInputStream.java:66) 
at java.io.FileReader.<init>(FileReader.java:41) 
at provegrafica.ProvaFramePop.createTxt(ProvaFramePop.java:154) 
at provegrafica.ProvaFramePop.jMenuSaveActionPerformed(ProvaFramePop.java:129) 
at provegrafica.ProvaFramePop.access$100(ProvaFramePop.java:17) 
at provegrafica.ProvaFramePop$2.actionPerformed(ProvaFramePop.java:64) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
at javax.swing.AbstractButton.doClick(AbstractButton.java:357) 
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809) 
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850) 
at java.awt.Component.processMouseEvent(Component.java:6289) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 
at java.awt.Component.processEvent(Component.java:6054) 
at java.awt.Container.processEvent(Container.java:2041) 
at java.awt.Component.dispatchEventImpl(Component.java:4652) 
at java.awt.Container.dispatchEventImpl(Container.java:2099) 
at java.awt.Component.dispatchEvent(Component.java:4482) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) 
at java.awt.Container.dispatchEventImpl(Container.java:2085) 
at java.awt.Window.dispatchEventImpl(Window.java:2478) 
at java.awt.Component.dispatchEvent(Component.java:4482) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644) 
at java.awt.EventQueue.access$000(EventQueue.java:85) 
at java.awt.EventQueue$1.run(EventQueue.java:603) 
at java.awt.EventQueue$1.run(EventQueue.java:601) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 
at java.awt.EventQueue$2.run(EventQueue.java:617) 
at java.awt.EventQueue$2.run(EventQueue.java:615) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 

生成成功(总时间:19秒),

加了:代码

else{ 
      String message = "File • " + file_name + " • already exist in \n" + file_path + ":\n" + "Do you want to overwrite?"; 
      String title = "Warning"; 
      int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION); 
      if(reply == JOptionPane.YES_OPTION){ 
       sFile.delete(); 

       BufferedWriter out = new BufferedWriter(new FileWriter(sFile)); 
       out.write(jTextArea1.getText()); 
       out.close(); 
       JOptionPane.showMessageDialog(null, "File • " + file_name + " • overwritten succesfully in \n" + file_path); 

      } 
     } 
+1

尝试e.printStackTrace( .out.println(“错误”),然后将其添加到帖子中。 – 2012-01-04 16:00:42

回答

2

那些的否则部分\ n的。您正在记事本中打开。

你要么需要打印出每个之前\ n一个\ R(其在这里可以通过使用缓冲作家,其具有打印线方法简单地完成),或例如在打开写字板。

+1

-1,重新发明车轮。 – camickr 2012-01-04 16:06:41

0

更换

line = line.replace("o", "\n"); 

line = line.replaceAll("o", System.getProperty("line.separator")); 
+0

好吧,愤怒的人;) – Vlad 2012-01-04 16:21:15

+0

你们是滑稽与反对投票...即使它不是最优化的解决方案,它也是正确的。所以我没有看到任何理由来投我的答案。如果你认为你的答案是更好的留给用户决定,而不是通过对其他答案进行投票来使其看起来“更好”。 – Vlad 2012-01-05 12:00:31

+1

这是一个初学者的问题。太多初学者,只是复制一个答案而不想。如果回答显示缺乏关于API的知识,我将低估任何答案。我必须承认这个答案比另一个我低估的答案要好,因为你至少试图以OS的格式保存文件。但它仍然是不必要的代码,并且效率不高。如果他们认为这是更好的答案,其他用户可以提高您的答案。因为我低估了你的答案,所以我得到了满意的结果。 – camickr 2012-01-05 16:03:18

3

不要推倒重来。

所有文本组件支持write(...)方法。将文本写入文件时,此方法将使用正确的换行符字符串。所以,你要做的就是:

textArea.write(...); 
0

你在其他部分做 你的程序是无法找到指定的文件。

你在说如果

if(!sFile.exists()){ // don't use not here 
// code to write into the file 
} 

),而不是系统的条件在那里,因为它应该是

if(sFile.exists()){ 
// code to write into the file 
} 

使用以下写入文件

while((line = br.readLine())!= null){ 
     out.append(line); //can also use write in place of append 
     out.append("\r\n"); 
     } 
     out.close();