2012-08-30 2 views
-7

메모장 프로그램을 만들었습니다. 문제는 .txt 형식으로 저장하지 않기 때문에 형식이없는 파일로 저장합니다. 그러나 .txt 파일을 열 수 있습니다. 어떻게 해결할 수 있습니까? 내 작품입니다..txt 형식으로 저장

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.Scanner; 
import java.io.*; 

public class NotePad extends JFrame { 

    private JTextArea noteArea; 


    public static void main(String[] args) { 
     NotePad p = new NotePad(); 
     p.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     p.setSize(500,300); 
     p.setVisible(true); 
    } 


    public NotePad() { 
     super("Java Notepad"); 
     setLayout(new BorderLayout()); 
     noteArea = new JTextArea("",20,20); 
     noteArea.setWrapStyleWord(true); 
     noteArea.setLineWrap(true); 

     Font font = new Font("sanserif", Font.BOLD,14); 
     noteArea.setFont(font); 

     JScrollPane scroller = new JScrollPane(noteArea); 
     scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
     scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); 
     add(scroller,BorderLayout.CENTER); 


     JMenuBar menuBar = new JMenuBar(); 
     JMenu fileMenu = new JMenu("File"); 
     JMenuItem openMenu = new JMenuItem("Open"); 
     openMenu.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent ae) { 
       JFileChooser openFile = new JFileChooser(); 
       openFile.showOpenDialog(new NotePad()); 
       loadFile(openFile.getSelectedFile()); 
      } 


     }); 
     JMenuItem saveMenu = new JMenuItem("Save"); 
     saveMenu.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent ae) { 
       JFileChooser saveFile = new JFileChooser(); 
       saveFile.showSaveDialog(new NotePad()); 
       fileSaved(saveFile.getSelectedFile()); 
      } 

     }); 

     JMenuItem exitMenu = new JMenuItem("Close"); 
     exitMenu.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent ae) { 
       System.exit(0); 
      } 

     }); 

     fileMenu.add(openMenu); 
     fileMenu.add(saveMenu); 
     fileMenu.add(exitMenu); 
     menuBar.add(fileMenu); 
     this.setJMenuBar(menuBar); 

    } 

    public void loadFile(File file) { 
     noteArea.setText(""); 
     try { 

      BufferedReader read = new BufferedReader(new FileReader(file)); 
      String line = null; 

      while((line =read.readLine())!=null) { 
       noteArea.append(line +"\n"); 
      } 
      read.close(); 
     } 
     catch (Exception e) { 
     System.out.println("Error " + e.toString()); 
     } 
    } 


    public void fileSaved(File file) { 
     try { 
      PrintWriter writer = new PrintWriter(file); 
      String[] lines = noteArea.getText().split("\\n"); 
      for (String) { 

       writer.println(words); 

      } 
      writer.close(); 
     } catch (Exception e) { 
      System.out.println("Error " + e.toString()); 
     } 
    } 
} 

btw 사이트에 따라 시나리오를 설명 할 수 없기 때문에 질문을 게시 할 수 없습니다. 그래서 거기. 도움을 주셔서 감사합니다

+1

출력이 텍스트 형식이 아닌 것이 확실합니까?!? .txt는 형식이 아니라 확장자입니다. – Parallelis

+1

Windows에서 실행중인 경우 Windows 탐색기의보기 옵션에서 "알려진 파일 확장명 숨기기"를 해제하십시오. – dasblinkenlight

+4

''btw 사이트''???에 따라 시나리오를 설명하지 않아 내 질문을 게시 할 수 없습니다. 뭐 ???? –

답변

2

출력 파일 이름 끝에 ".txt"확장자를 추가해야합니다 (존재하지 않는 경우). 자바 및 Windows 나는 사용자가 다른 확장 기능을 제공하고 있는지 확인하지했듯이 이것은 손으로 꽤 무거운

public void fileSaved(File file) { 
    String name = file.getPath(); 
    if (!name.toLowerCase().endsWith(".txt")) { 
     name += ".txt"; 
     file = new File(name); 
    } 

    //... 

... 당신을 위해 그것을하지 않을 수 있습니다,하지만 난 메모장이 기본적으로 수행 생각 같은 것 : P

0

모든 파일 이름은 - NAME과 EXTENSION의 두 부분으로 구성됩니다. 메모장은 기본적으로 .txt로 저장하지만 항상 그런 것은 아닙니다.

당신은 그것을 작동하게하기 위해

public void fileSaved(File file) { 
String name = file.getPath(); 
if (!name.toLowerCase().endsWith(".txt")) { 
    name += ".txt"; 
    file = new File(name); 
} 

로 확장을 제공해야합니다. 그것을 밖으로 시도하십시오.

관련 문제