괴발개발

<ZAVA I.O 사용해서 파일 복사하는 2번째 방법> 본문

BACK END/JAVA

<ZAVA I.O 사용해서 파일 복사하는 2번째 방법>

dinoelll 2023. 3. 14. 22:53

		PartsUploadUtil util = new PartsUploadUtil(req);
		String fileName = util.getFileName("photo");
		InputStream is = util.getStream("photo");
		BufferedInputStream bis = new BufferedInputStream(is);

		
		FileOutputStream fos  = new FileOutputStream("C:/img/"+fileName);
		BufferedOutputStream bos = new BufferedOutputStream(fos);
        int size = (int) util.getFileSize("photo");//1) 파일 사이즈 읽어주고
		
        
        //2) 담아줄 똑같은 크기의 통 준비하고
        byte[] arr = new byte[size]; //  어레이리스트랑 다르게 리스트는 사이즈 지정 해줘야 함.
		System.out.println("배열 사이즈 :" +size);//1:1:29 ?? 
		int result = bis.read(arr)//3) 그대로 집어넣어으면서 읽어버림
		System.out.println(result);
		bos.write(arr)
		fos.flush();
		fos.close();
		*/

+ 첫번째 방법

 

@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
			throws ServletException, IOException {
		//받아온 요청을 문자와 파일로 구분해 준다.
		PartsUploadUtil util = new PartsUploadUtil(req);
		
		HashMap<String, String> params = util.getParams();// 일반 파라메터
		System.out.println(params);
		
		//파일로 부터 스트림을 생성해 낸다. // <- 이미 빨아드린거임
		InputStream is = util.getStream("photo");
		//파일 이름 추출
		String fileName =  util.getFileName("photo");
		System.out.println("저장할 파일명: " + fileName);
		
		/*여기부터 중요*/
		// 1. (파일 경로)xx 저장할 위치 를 지정하고 객체화 한다.
		//File file = new File("C:/img/"+fileName); -> 이거 안하고 걍 밑에다가
		//2. 라이터(outputStream - 사진이니까!)를 만들고 , 파일, 인코딩, 트루 여부 지정하낟.
		FileOutputStream fos = new FileOutputStream("C:/img/"+fileName);
		
		//3. 라이터에 (content)넣고 라이트 메서드 써서 쓴다.
		
		long start = System.currentTimeMillis();
		
		int data;
		while((data=is.read()) != -1) {
			System.out.println("복사중 ...");
			fos.write(data);
			
		}
		long end = System.currentTimeMillis();
		
		fos.flush();
		fos.close();
		is.close();
		
		req.setAttribute("msg", ((end-start)/1000)+"초");
		RequestDispatcher dis = req.getRequestDispatcher("index.jsp");
		dis.forward(req, resp);
		
		
		//4. flush로 깨끗이 비운다.
		//5. close로 닫느다.
Comments