자바로 메모장의 일부분을 만드는데요..

자바로 메모장의 일부분을 만드는데요..

작성일 2007.12.06댓글 1건
    게시물 수정 , 삭제는 로그인 필요

메모장이 뜨고 글을 쓴다음 저장을 하면

 

저장된 척 하는 파일이 생기는데 파일 크기가 0바이트에요 ㅠ

 

이 소스도 다 제가 만든건 아니고 왕초보라서 어처구니 없는걸 모를수도 있거든요?;

 

알려주세요~ ㅠ

 

 

 

 

import java.io.*;
import java.awt.*;
import java.awt.event.*;

 

public class H2301248 extends Frame {
private TextArea ta = null;
 private TextField tf = null;
 private Button button = null; 
 

 public H2301248() {
  setLayout(new BorderLayout());  
  setTitle("Notepad");
  setBounds(100,100, 600, 400);
  Panel p = new Panel();
  button = new Button("Save");  
  tf = new TextField(30);
  p.add(button);  
  p.add(tf);  
  this.add(p, "South");
  ta = new TextArea();
  ta.setEditable(true);
  add(ta, "Center");
  button.addActionListener(new MyActionListener(this, tf, ta));
  addWindowListener(
   new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
     dispose();
     setVisible(false);
     System.exit(0);
    }
   }
  );
 }
 

 public static void main(String args[]) {
  H2301248 note = new H2301248();
  note.setVisible(true);
 }
}

 

 class MyActionListener implements ActionListener {
 private TextField tf = null;
 private TextArea ta = null;
 private Frame f = null;
 public MyActionListener(Frame f, TextField tf, TextArea ta) {
  this.tf = tf;
  this.ta = ta;
  this.f = f;
 }
 public void actionPerformed(ActionEvent arg0) {
  FileDialog fd = new FileDialog(f, "Save..", FileDialog.SAVE);
  fd.setVisible(true);
  String dir = fd.getDirectory();
  String fileName = fd.getFile();
  File f = new File(dir, fileName);
  try {
   FileOutputStream fos = new FileOutputStream(f);
   byte[] buf = new byte[(int)f.length()];
   fos.write(buf);
   tf.setText(dir+fileName);
   ta.setText(new String(buf));
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

 



profile_image 익명 작성일 -

밑의 부분이 파일에 저장하는 부분이네요.

빨간 글씨로 지적한 것처럼, 실제 저장할 내용이 아무것도 없는 상태에서 저장하기 때문입니다.

데이터를 저장한 부분의 영역 계산과 실제 데이터의 입력부분은 만드셔야 할 듯 하네요.

 

  // 파일 변수 선언

  File f = new File(dir, fileName);
  try {

   // 파일 출력 스트림 개방
   FileOutputStream fos = new FileOutputStream(f);

   // 파일에 저장할 영역 생성 - 파일의 크기만큼 영역을 만들지만 신규 파일이면 크기가 0이 된다
   byte[] buf = new byte[(int)f.length()];

   // 파일에 쓰기 - 위에서 영역만 만들고 사이즈도 0이고 실제 데이터도 없으므로 아무것도 않함
   fos.write(buf);

   // 텍스트 필드에 파일명 쓰기
   tf.setText(dir+fileName);

   // 텍스트 에리어에 저장한 내용 쓰기 - 저장한 내용이 아무것도 없으니까 아무것도 보이지 않음
   ta.setText(new String(buf));

   fos.close(); // 스트림도 닫아야 함
  } catch (IOException e) {
   e.printStackTrace();
  }

워드프로세서 2급 필기...

... 보일러플레이트 : 작성중인 문서의 일부분에 주석... 만드는데 사용된 언어 규약으로 웹 문서의 표준으로 사용 115. 인터넷 프로그래밍의 종류 : CGI, ASP, 자바, PHP...

컴퓨터 관련(IT) 용어 20개 알려주세요

... Applet 썬마이크로시스템 사가 웹 커뮤니티에 자바를 소개한 이래 보편화된 말로... 프로그램의 일부분을 말한다. Background 동시에 하나 이상의 작업이 가능한...

홈페이지만드는태그를 알고싶어요 >ㅁ<;;

... 나모가 저의 컴에는 안깔려 있어서 메모장으로 태그로... 일부분일 뿐이지요. 그리고 태그 자체가 홈페이지를 만드는데 가장 기본적인 명령어 랍니다. ^^;;) 저는 아직 자바...

워드프로세서2급 필기 합격하는법

... 보일러플레이트 : 작성중인 문서의 일부분에 주석... 만드는데 사용된 언어 규약으로 웹 문서의 표준으로 사용 115. 인터넷 프로그래밍의 종류 : CGI, ASP, 자바, PHP...

워드프로세서 2급 요점정리좀..

... 보일러플레이트 : 작성중인 문서의 일부분에 주석... 만드는데 사용된 언어 규약으로 웹 문서의 표준으로 사용 115. 인터넷 프로그래밍의 종류 : CGI, ASP, 자바, PHP...

워드 2급 필기 요약 핵심 ♡

... 보일러플레이트 : 작성중인 문서의 일부분에 주석... 만드는데 사용된 언어 규약으로 웹 문서의 표준으로 사용 115. 인터넷 프로그래밍의 종류 : CGI, ASP, 자바, PHP...

워드2급필기에 잘 나오는 영어 단어

... 보일러플레이트 : 작성중인 문서의 일부분에 주석... 만드는데 사용된 언어 규약으로 웹 문서의 표준으로 사용 115. 인터넷 프로그래밍의 종류 : CGI, ASP, 자바, PHP...