객체 파일 작성 및 읽기

Organ·2024년 1월 26일
0

JAVA

목록 보기
14/14

파일 작성

<%
	// ObjectWrite.jsp
	
	String appRoot = "/";
	appRoot = pageContext.getServletContext().getRealPath(appRoot);
	
	// 테스트
	System.out.println(appRoot);
	
	// 파일 객체 생성
	File newFile = new File(appRoot, "objData/data.ser");
	// 객체 직렬화
	
	// 파일이 존재할 디렉터리가 존재하지 않을 경우에는
	// 파일이 위치할 경로까지의 디렉터리들을 생성해준다.
	if( !newFile.getParentFile().exists())
	{
		newFile.getParentFile().mkdirs();
	}
	
	// 파일에 넣기 위한 Hashtable 객체를 만들어 데이터에 포함시킨다.
	Hashtable<String, String> h = new Hashtable<String, String>();
	
	h.put("key1", "사과");
	h.put("key2", "수박");
	
	// 파일을 내보내기 위한 스트림 구성
	FileOutputStream fos = new FileOutputStream(newFile);
	
	// Object 를 파일에 기록하기 위해 ObjectOutputStream 객체 생성
	// -> 생성한 객체로 FileOutputStream 객체 감싸기
	ObjectOutputStream oos = new ObjectOutputStream(fos);
	
	// ObjectOutputStream 을 이용하여 파일에 Object 를 기록
	oos.writeObject(h);
	
	// 리소스 반납
	oos.close();
	fos.close();
	
// 아리 템플릿 제거
	
%>

파일 읽기

<%
	// ObjectRead.jsp
	
	String appRoot = "/";
	appRoot = pageContext.getServletContext().getRealPath(appRoot);
	
	File newFile = new File(appRoot, "objData/data.ser");
	
	// 파일이 존재하는지 확인한 후 처리
	if (newFile.exists())
	{
		// 파일을 읽어들이기 위해 FileInputStream 객체 생성
		FileInputStream fis = new FileInputStream(newFile);
		
		// 파일에서 Object 를 읽어들이기 위해 ObjectInputStream 객체 생성
		ObjectInputStream ois = new ObjectInputStream(fis);
		
		// ObjectInputStream 을 이용하여 파일로부터 Object 읽어오기
		// 읽어온 Object 를 원래의 형(타입)으로 캐스팅
		Hashtable h = (Hashtable)ois.readObject();
		
		ois.close();
		fis.close();
		
		Enumeration e = h.keys();
		while(e.hasMoreElements())
		{
			String key = (String)e.nextElement();
			String value = (String)h.get(key);
			
			%>
			
			<%=key %>의 값은 <%=value %> 입니다. <br>
			
			<% 
		}
	}
	else
	{
		out.println("해당 파일이 존재하지 않습니다.");
	}
%>

0개의 댓글