txt파일 읽고, 쓰고, 수정하기

txt파일 읽고, 쓰고, 수정하기

import java.io.*;//파일 읽으려면.
import javax.swing.*;//메시지 주려면

class Sawon{
 int sabun;
 String name;
 String job;
 String loc;//근무지
 String hiredata; //static을 걸지 않았으므로 각각 저장 가능
}

public class MainClass {
 static Sawon[] sawonRead() throws Exception{//파일 읽을 때는 예외처리 반드시 해야함.
            //”익셉션”이란 코드적으로 수정 가능한 에러를 대비할때 씀.
            //메모리 부족한 경우는 아님
  
  //파일 읽기
  FileReader fr=new FileReader(new File(“c:\\javaDev\\sawon.csv”));
   //인풋스트림은 한글이 깨져버림. 인풋스트림은 8비트씩 가져옴.
   //파일리더는 16비트씩 가져오므로 괜찮음.
  
  String data=””;
  int i=0;
  while((i=fr.read())!=-1){//파일을 EOF까지 읽어옴
   data+=(char)i;
  }
  //System.out.println(data);
  //개행문자별로 나눠서 data에 넣기
  String[] sawonData=data.split(“\n”);
  
  //줄수만큼 사원 클래스 만들기
  Sawon[] sa=new Sawon[sawonData.length];
  //클래스는 생성하자마자 어떤 모습일까?
  //sa={null,null,null} 와 같은 모습이다.
  //int[] a=new int[3] a={0,0,0} 이 되듯이.
  
  for(i=0;i<sa.length;i++){
   sa[i]=new Sawon();//메모리 할당. 공간이 만들어진 상태. C의 malloc과 같음
   String[] ss=sawonData[i].split(“,”);//for문 나가면 사라짐. 임시.
   sa[i].sabun=Integer.parseInt(ss[0]);//숫자로 변환
   sa[i].name=ss[1];
   sa[i].job=ss[2];
   sa[i].loc=ss[3];
   sa[i].hiredata=ss[4];
  }
  
  /*for(i=0;i<sa.length;i++){
   System.out.println(sa[i].sabun+” “
               +sa[i].name+” “
               +sa[i].job+” “
               +sa[i].loc+” “
               +sa[i].hiredata);
  }*/
  return sa;
 }
 
 static void sawonWrite() throws Exception{
  Sawon[] sa=sawonRead();
  String[] temp={“이름”,”직위”,”근무지”,”입사일자”};
  int sabun=0;
  /*for(int i=0;i<sa.length;i++){
   if(sabun<sa[i].sabun)
    sabun=sa[i].sabun;
  }
  sabun++;*/

//자동 증가번호 만들기: 시퀀스
  
  
  
  String res=””;
  for(int i=0;i<temp.length;i++){
   String ss=JOptionPane.showInputDialog(temp[i]+” 입력:”);
   res += ss+”,”;
  }
  
  String data=sabun+”,”+res.substring(0,res.lastIndexOf(“,”))+”\n”;//맨 마지막 콤마 제거
  
  //파일 쓰기
  File file=new File(“c:\\javaDev\\sawon.csv”);
  FileWriter fw=new FileWriter(file,true);
  //FileWriter fw=new FileWriter(file);하면 덮어쓰기가 되고
  //FileWriter fw=new FileWriter(file,true);하면 어펜드(붙여서 계속추가)가 된다.
  
  fw.write(data);
  fw.close();
  JOptionPane.showMessageDialog(null, “사원 등록 완료”);
 }
 
 static void sawonFind() throws Exception{
  Sawon[] sa=sawonRead();
  String name=JOptionPane.showInputDialog(“이름 입력:”);
  String res=””;
  for(int i=0;i<sa.length;i++){
   if(name.equals(sa[i].name)){
    res+=”사번:”+sa[i].sabun+”\n”
     +”이름:”+sa[i].name+”\n”
     +”직위:”+sa[i].job+”\n”
     +”근무지:”+sa[i].loc+”\n”
     +”입사일자:”+sa[i].hiredata+”\n”;
   }
  }
  JOptionPane.showMessageDialog(null, res);
 }
 
 public static void main(String[] args) throws Exception{
  // TODO Auto-generated method stub
  //sawonRead();
  //sawonFind();
  sawonWrite();
 }