FileReader로 파일 읽기 -> 한글 안 깨짐
import java.io.*;
import java.util.*;
public class M1 {
public static void main(String[] args) {
try
{
FileReader fis = new FileReader("C:\\Users\\user\\eclipse-workspace\\6.14\\src\\com\\sist\\io\\M1.java");
int i=0; // read() -> int
while((i=fis.read())!=-1) // -1 -> 문장이 끝날 때까지
{
System.out.print((char)i);
}
fis.close(); // 형 변환 후 닫기
}catch(Exception ex) {}
}
}
파일 읽어오기 -> 파일(File)인지 폴더(Dir)인지 구분
import java.io.*;
public class M2 {
public static void main(String[] args) {
try
{
// 1. File 객체 생성
File dir = new File("c:\\javaDev\\");
// 2. javaDev에 있는 모든 폴더/파일 읽어 온다.
File[] list = dir.listFiles();
// 3. 출력
for(File f:list)
{
// System.out.println(f.getName());
// 파일인지 확인
if(f.isFile())
{
System.out.println(f.getName() + "(file)");
}
else
{
System.out.println(f.getName() + "(DIR)");
}
}
} catch(Exception ex)
{
ex.printStackTrace();
}
}
}
파일 만들기, 폴더 만들기
// 파일 만들기, 폴더 생성하기
public class M3 {
public static void main(String[] args) {
try
{
// 1. 폴더 만들기
File dir = new File("c:\\사원");
// 2. 사원 폴더가 있는지 확인
if(!dir.exists()) // 사원 폴더가 없으면
{
dir.mkdir(); // 만들어라
System.out.println("폴더 생성!!");
}
else
{
System.out.println("이미 존재하는 폴더입니다...");
}
// 3. 파일 만들기
File file = new File("c:\\사원\\sawonData.txt");
if(!file.exists()) // 존재 여부 항상 확인 해야 함
{
file.createNewFile();
System.out.println("파일 만들기 완료!!");
}
else
{
System.out.println("이미 존재하는 파일입니다...");
}
} catch(Exception ex)
{
ex.printStackTrace();
}
}
}
파일 정보 읽기
수정 일: 1654158751798
수정 일: Thu Jun 02 17:32:31 KST 2022
수정 일: 2022년 06월 02일 05시 32분 31초
ㅡㅡㅡㅡ 기타 정보 ㅡㅡㅡㅡ
***파일 명: melon.txt
***파일 + 경로 명: c:\javaDev\melon.txt
경로 명: c:\javaDev
읽기 전용: true
쓰기 전용: true
숨김 파일: false
절대 경로: c:\javaDev\melon.txt
정규 경로: C:\javaDev\melon.txt
File.pathSeparator - ;
파일 크기: 5809
5KB
import java.util.*; // Date
import java.text.*; // SimpleDateFormat
import java.io.*; // lastModified : 수정 날짜
public class M4 {
public static void main(String[] args) {
try
{
File file = new File("c:\\javaDev\\melon.txt");
System.out.println("수정 일: " + file.lastModified());
// 데이터 변환
long last = file.lastModified();
Date date = new Date(last);
System.out.println("수정 일: " + date);
// 날짜 변환
SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 hh시 mm분 ss초");
System.out.println("수정 일: " + sdf.format(date));
System.out.println("ㅡㅡㅡㅡ 기타 정보 ㅡㅡㅡㅡ");
System.out.println("***파일 명: " + file.getName());
System.out.println("***파일 + 경로 명: " + file.getPath());
System.out.println("경로 명: " + file.getParent());
System.out.println("읽기 전용: " + file.canRead());
System.out.println("쓰기 전용: " + file.canWrite());
System.out.println("숨김 파일: " + file.isHidden());
System.out.println("절대 경로: " + file.getAbsolutePath());
System.out.println("정규 경로: " + file.getCanonicalPath());
System.out.println("File.pathSeparator - " + File.pathSeparator);
System.out.println("파일 크기: " + file.length());
long size = file.length();
String s = "";
if(size/1024 > 0)
s = (size/1024) + "KB";
else
s = size + "Bytes"; // 작은 파일은 바이트로 출력
System.out.println(s);
} catch(Exception ex)
{
ex.printStackTrace();
}
}
}
파일 복사
import java.io.*;
public class M5 {
public static void main(String[] args) {
try
{
// 파일 읽기 -> FileInputStream
// 파일 쓰기 -> FileOutputStream
// 파일 복사, 파일 다운로드
FileInputStream fis = new FileInputStream("c:\\javaDev\\melon.txt"); // 이 파일을
FileOutputStream fos = new FileOutputStream("c:\\사원\\melon.txt"); // 이 폴더에 복사
// FileOutputStream -> 파일이 없는 경우 자동으로 생성
int i=0;
byte[] buffer = new byte[1024];
while((i=fis.read(buffer, 0, 1024))!=-1) // 파일 끝까지 읽는다
{
fos.write(buffer, 0, i); // 파일 서버에 전송
}
fis.close();
fos.close();
System.out.println("파일 복사 완료!!");
} catch(Exception ex) {}
}
}
사원 입력 값 가져오기, 수정..
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Sawon {
private int sabun;
private String name;
private String dept;
private String loc;
private String job;
private String hiredate;
private int pay;
}
import java.util.*;
import java.io.*;
public class SawonManager {
private static ArrayList<Sawon> list=new ArrayList<Sawon>();
// 초기화
static
{
try
{
FileReader fr=new FileReader("c:\\사원\\sawonData.txt");
String data="";
int i=0;
while((i=fr.read())!=-1)
{
data+=(char)i;
}
fr.close();
if(!data.equals(""))// 에러방지
{
String[] sawonData=data.split("\n");// 한줄씩 데이터 저장
for(String sawon:sawonData)
{
StringTokenizer st=new StringTokenizer(sawon,"|");
Sawon sa=new Sawon();
sa.setSabun(Integer.parseInt(st.nextToken()));
sa.setName(st.nextToken());
sa.setJob(st.nextToken());
sa.setDept(st.nextToken());
sa.setLoc(st.nextToken());
sa.setHiredate(st.nextToken());
sa.setPay(Integer.parseInt(st.nextToken()));
list.add(sa);
}
}
}catch(Exception ex){}
}
// 기능
// 1. 목록
public void sawonList()
{
for(Sawon sa:list)
{
System.out.println(sa.getSabun()+" "
+sa.getName()+" "
+sa.getJob()+" "
+sa.getDept()+" "
+sa.getLoc());
}
}
// 2. 사원추가
public void sawonInsert()
{
Scanner scan=new Scanner(System.in);
System.out.print("이름 입력:");
String name=scan.next();
System.out.print("직위 입력:");
String job=scan.next();
System.out.print("부서 입력:");
String dept=scan.next();
System.out.print("근무지 입력:");
String loc=scan.next();
System.out.print("입사일 입력:");
String day=scan.next();
System.out.print("연봉 입력:");
int pay=scan.nextInt();
Sawon sa=new Sawon();
sa.setName(name);
sa.setJob(job);
sa.setDept(dept);
sa.setLoc(loc);
sa.setHiredate(day);
sa.setPay(pay);
list.add(sa);
fileSave();
}
// 3. 사원수정
public void sawonUpdate()
{
Scanner scan = new Scanner(System.in);
sawonList();
System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
System.out.println("사번 입력: ");
int sabun = scan.nextInt();
System.out.print("이름 입력:");
String name=scan.next();
System.out.print("직위 입력:");
String job=scan.next();
System.out.print("부서 입력:");
String dept=scan.next();
System.out.print("근무지 입력:");
String loc=scan.next();
System.out.print("입사일 입력:");
String day=scan.next();
System.out.print("연봉 입력:");
int pay=scan.nextInt();
Sawon sa=new Sawon();
sa.setSabun(sabunMake());
sa.setName(name);
sa.setJob(job);
sa.setDept(dept);
sa.setLoc(loc);
sa.setHiredate(day);
sa.setPay(pay);
sa.setSabun(sabun);
int k=0;
for(Sawon s:list)
{
if(s.getSabun()==sa.getSabun())
{
list.set(k, sa);
break;
}
k++;
}
fileSave();
}
// 4. 사원 상세보기
public void sawonDetail()
{
Scanner sc = new Scanner(System.in);
sawonList();
System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
System.out.println("사번 입력: ");
int sabun = sc.nextInt();
for(Sawon sa:list)
{
if(sa.getSabun()==sabun) // primary key
{
System.out.println("사번: " + sa.getSabun());
System.out.println("이름: " + sa.getName());
System.out.println("부서: " + sa.getDept());
System.out.println("근무지: " + sa.getLoc());
System.out.println("사번: " + sa.getJob());
System.out.println("입사일: " + sa.getHiredate());
System.out.println("연봉: " + sa.getPay());
break;
}
}
}
// 5. 사원삭제
public void sawonDelete()
{
Scanner sc = new Scanner(System.in);
for(Sawon sa :list)
{
System.out.println(sa.getSabun() + "." + sa.getSabun());
}
System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
System.out.println("삭제할 사번을 선택하세요.");
int sabun = sc.nextInt();
for(Sawon sa:list)
{
if(sa.getSabun()==sabun)
{
list.remove(sa);
break;
}
}
fileSave();
}
// 6. 메뉴
public int menu()
{
System.out.println("===== 메뉴 =====");
System.out.println("1. 사원 목록 보기");
System.out.println("2. 사원 상세 보기");
System.out.println("3. 사원 추가");
System.out.println("4. 사원 수정");
System.out.println("5. 사원 삭제");
System.out.println("9. 종료");
System.out.println("===============");
Scanner scan=new Scanner(System.in);
System.out.print("메뉴 선택:");
return scan.nextInt();
}
// 7. 종료시 파일에 저장
public void fileSave()
{
try
{
FileWriter fw=new FileWriter("c:\\사원\\sawonData.txt");
for(Sawon sa:list)
{
String s=sa.getSabun()+"|"
+sa.getName()+"|"
+sa.getJob()+"|"
+sa.getDept()+"|"
+sa.getLoc()+"|"
+sa.getHiredate()+"|"
+sa.getPay()+"\n";
fw.write(s);
}
fw.close();
}catch(Exception ex){}
}
// 8. 시퀀스 (사번을 자동 증가)
public int sabunMake()
{
int sabun=0;
for(Sawon sa:list)
{
if(sa.getSabun()>sabun)
sabun=sa.getSabun();//sabun의 최대값
}
return sabun+1;
}
}
import java.util.Scanner;
public class SawonMain {
public static void main(String[] args) {
SawonManager sm = new SawonManager();
while(true)
{
int m = sm.menu();
if(m==9)
{
System.out.println("프로그램 종료");
sm.fileSave();
break;
}
else if(m==1)
{
sm.sawonList();
}
else if(m==2)
{
sm.sawonDetail();
}
else if(m==3)
{
sm.sawonInsert();
}
else if(m==4)
{
sm.sawonUpdate();
}
else if(m==5)
{
sm.sawonDelete();
}
}
}
}
'수업' 카테고리의 다른 글
+30 IO 라이브러리: ObjectInputStream, ObjectOutputStream (0) | 2022.06.15 |
---|---|
+28 라이브러리(ArrayList), Stack, Queue, HashSet, TreeSet, HashMap, Collections, 어노테이션 (0) | 2022.06.13 |
+27 컬렉션 프레임워크: ArrayList (0) | 2022.06.10 |
+26 형식화 클래스: Decimal Format, SimpleDateFormat, ChoiceFormat (0) | 2022.06.09 |
+26 라이브러리 : java.util, java.util.regex, java.util.StringTokenizer (0) | 2022.06.09 |