본문 바로가기

아옳옳의 코딩공부/아옳옳 자바코딩공부

2021-05-11자바공부(파일 클래스)

반응형

빨간부분에서 파일의 확장자 명이 없으면 디렉토리(폴더) 로 생각한다 

코드 보면서 어떻게 사용하는지 확인하자. 

	public static void main(String[] args) throws Exception{
		
		File dir = new File("c:Temp/Dir");
		File file1= new File("c:Temp/File1.txt");
		File file2= new File("c:Temp/File2.txt");
		
		if(!dir.exists()) {
			// 존재 하는지 여부를 물어보고 존재하지 않다면 만들겠다. 
			dir.mkdir(); // 새로운 디렉토리 생성 
		}
		if(!file1.exists()) {
			// 존재 하는지 여부를 물어보고 존재하지 않다면 만들겠다. 
			file1.createNewFile(); // 새로운파일 생성 
		}
		if(!file2.exists()) {
			// 존재 하는지 여부를 물어보고 존재하지 않다면 만들겠다. 
			file2.createNewFile();
		}
		
		File temp = new File("C:Temp/File2");
		//날짜 포멧을 원하는 포멧으로 변경
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd- a HH:mm");
		//temp 디렉토리에 포함된 파일 및 서브 디렉토리목록 전부파일 배열로 리턴 
		File[] contents = temp.listFiles();
		System.out.println("날짜 \t\t\t 시간 \t\t 형태 \t\t 크기 \t\t 이름");
		System.out.println("========================================");
		
		for(File file : contents) {
			System.out.print(sdf.format(new Date(file.lastModified())));
			//디렉토리인지 여부를 확인 
			if(file.isDirectory()) {
				//디렉토리이면 아래 문장 호출 
				System.out.print("\t <DIR> \t\t\t"+file.getName());
			}else{
				//아니라면 아래문장 호출 
				System.out.print("\t\t"+file.length());
				System.out.print("\t\t"+file.getName());
			}
			System.out.println("");
		}
	}

}

이렇게 사용할 수 있다.


평가 : Board클래스를 만들고 클래스는 아래의 내용을 담고 있다. 

이렇게 만든 클래스를 어레이리스트에 담아서 어제배운 배용으로 내보낸뒤에 다시 받아오는 작업을 해보도록 하자 

 

Board 클래스 

public class Board implements Serializable{
	//각종 내용을 담고 있는 변수들 
	String  songname , singer, songAlbum, songdata;
	int num;
	//생성자 
	public Board(int num, String songname, String singer, String songAlbum, String songdata) {
		this.num = num;
		this.songname = songname;
		this.singer = singer;
		this.songAlbum = songAlbum;
		this.songdata = songdata;
	}
//겟터 셋터 생략 		
}

객체를 만들어줄 클래스이다. 생성자로 만들어줌 

 

메인클래스

public class TestMain {

	public static void main(String[] args) {
		//객체 생성 
		Board board = new Board(1, "밤하늘의 별을", "경서", "밤하늘의 별을(2020)", "2020-11-14");
		Board board2 = new Board(2, "Dynamite", "방탄소년단", "Dynamite", "2020-08-24");
		Board board3 = new Board(3, "Lovesick girls", "BLACKPINK", "THE ALBUM", "2020-10-02");
		//어레이리슽 생성
		ArrayList<Board> list = new ArrayList<>();
		//어레이 리스트에 추가 
		list.add(board);
		list.add(board2);
		list.add(board3);

		try {
			//오브젝트 스트림 생성 
			ObjectOutputStream ob = new ObjectOutputStream(new FileOutputStream("C:/Temp/board.db"));
			//오브젝트클래스로 파일내보내주기 
			ob.writeObject(list);
			ob.flush();
			ob.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

		try {
			//읽어오는 InputStream 생성 
			ObjectInputStream oi = new ObjectInputStream(new FileInputStream("C:/Temp/board.db"));
			try {
				//불러오기 
				ArrayList<Board> list2 = (ArrayList) oi.readObject();
				
				//각종내용 출력 
				System.out.println(list2.get(0).num + "  " + list2.get(0).songname + "\t\t" + list2.get(0).singer + "\t\t"
						+ list2.get(0).songAlbum + "\t   " + list2.get(0).songdata);
				System.out.println(list2.get(1).num + "  " + list2.get(1).songname + "\t\t" + list2.get(1).singer + "\t\t"
						+ list2.get(1).songAlbum + "\t   " + list2.get(1).songdata );
				System.out.println(list2.get(2).num + "  " + list2.get(2).songname + "\t" + list2.get(2).singer + "\t"
						+ list2.get(2).songAlbum + "\t   " + list2.get(2).songdata);
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

이렇게 해서 오늘 시험도 무사통과.... ㅠ ㅠ 할때는 어떻게 해야할지 몰라 당황했지만... 사실 보면 별거 없다 .. ㅜㅠ

익숙 해지기 위해 더 공부해야 겠지..... 

반응형