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();
}