2014-04-10 1 views
0

FileWriter를 사용하여 노트 프로그램을 만들었습니다. 긴 메모를 쓰지 않으면 메모가 한 줄에 저장된다는 것을 제외하고는 완벽하게 작동합니다. 프로그램이 특정 수의 문자 다음에 다음 줄에 쓸 수 있도록 할 수있는 방법이 있습니까? 이 내 코드입니다 :긴 문자열의 특정 문자 수 이후에 다음 줄에 쓸 FileWriter가 필요합니다.

import static javax.swing.JOptionPane.*; 
import static java.lang.Integer.*; 
import static java.lang.System.*; 
import static java.lang.Double.*; 
import static java.lang.Math.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.util.*; 
import java.text.*; 
import java.awt.*; 
import java.io.*; 


public class Note extends JFrame implements ActionListener { 
JTextArea area; 
JTextField title; 
JLabel titleTxt, noteTxt; 
JButton save, clear, exit; 
FileWriter writer=null; 
PrintWriter gen =null; 
Scanner reader =null; 
boolean append = true; 

public static void main(String[] args) { 
    Note window = new Note(); 
    window.setTitle("Note"); 
    window.setLocationRelativeTo(null); 
    window.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    window.createGUI(); 
    window.setSize(300,250); 
    window.setResizable(false); 
    window.setVisible(true); 
} 

public void createGUI() { 
setLayout (new FlowLayout()); 

    titleTxt = new JLabel("Title:"); 
    add(titleTxt); 

    title = new JTextField(30); 
    add(title); 

    noteTxt = new JLabel("Note:"); 
    add(noteTxt); 

    area = new JTextArea(5,25); 
    area.setLineWrap(true); 
    area.setWrapStyleWord(true); 
    JScrollPane field = new JScrollPane(area); 
    add(field); 

    save = new JButton("Save"); 
    save.addActionListener(this); 
    add(save); 

    clear = new JButton("Clear"); 
    clear.addActionListener(this); 
    add(clear); 

    exit = new JButton("Exit"); 
    exit.addActionListener(this); 
    add(exit); 

} 

public void actionPerformed(ActionEvent e){ 
    if(e.getSource() == save){ 
     Save(); 
     area.setText(""); 
     title.setText(""); 
    } 
    else if(e.getSource() == clear){ 
     area.setText(""); 
     title.setText(""); 
    } 
    else if(e.getSource() == exit){ 
     System.exit(0); 
    } 

} 

private void Save(){ 

    String date = new SimpleDateFormat("dd-MM-yyyy").format(Calendar.getInstance().getTime()); 
    String timeStamp = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()); 

    String outTxt = "Note is saved"; 

    try{ 

     //FileWriting 
     File file = new File(date+".txt"); 
     writer = new FileWriter(file,append); 
     writer.write("Tid: "+timeStamp+"\r\n"); 
     writer.write("\r\n"); 
     writer.write(title.getText()+"\r\n"); 
     writer.write("\r\n"); 

     writer.write(area.getText()+"\r\n"); 
     writer.write("\r\n"); 
     writer.write("\r\n"); 
     writer.close(); 

    } 


     catch (FileNotFoundException e){ 
       outTxt="File Not Found"; 
      } 

      catch (Exception e){ 
       outTxt="Error"; 
      } 
      finally { 
       if (reader!=null)reader.close(); 
       showMessageDialog(null, outTxt); 
      } 

     } 


} 

답변

0

가장 쉬운 방법은과 같이 일을하는 것입니다 :

try{ 

     //FileWriting 
     File file = new File(date+".txt"); 
     writer = new FileWriter(file,append); 
     writer.write("Tid: "+timeStamp+"\r\n"); 
     writer.write("\r\n"); 
     writer.write(title.getText().replaceAll("(.{50}[^ ]+)\\s+", "$1\r\n")+"\r\n"); 
     writer.write("\r\n"); 

     writer.write(area.getText().replaceAll("(.{50}[^ ]+)\\s+", "$1\r\n")+"\r\n"); 
     writer.write("\r\n"); 
     writer.write("\r\n"); 
     writer.close(); 

    } 

이 50 자 및 후속 비 공백 문자를 교체하고 그룹에 넣어 것 같은 그룹으로 바꾸고 \r\n.

+0

감사합니다. 단어가 char nr이면 단어가 잘리지 않도록 단어를 만드는 방법도 알고 있습니까? 47-52? – SlyTech404

+0

@ SlyTech404 : 내 대답 업데이트를 참조하십시오. – npinti

+0

"(. {50} [^] +) \ s +"의 "s"에 "불법 탈출 문자"오류가 표시됩니까? – SlyTech404