자바I/O 자바의 I/O 예제 [2]

황제낙엽 2007.07.14 09:50 조회 수 : 1813 추천:162

1. 예제 소스 환경 : Tomcat 5.0, JDK1.6.0




1. File (파일과 디렉토리)
    1) 현재 컴퓨터의 "c:/My Utilities" 디렉토리에 관한 정보를 제공한다. 디렉토리에 있는 파일들과 하위 디렉토리에 관한 정보를 출력한다.

·미리보기 | 소스복사·
  1. import java.io.File;   
  2.   
  3. public class FileDirDemo1 {   
  4.   
  5.     public static void main(String args[]) {   
  6.         String directory = "c:/My Utilities";   
  7.         File fl = new File(directory);   
  8.        
  9.         if(fl.isDirectory()) {   
  10.             System.out.println("검색 디렉토리 : "+directory);   
  11.             System.out.println("=================================");   
  12.             String s[] = fl.list();   
  13.             for(int i=0; i
  14.                 File f = new File(directory + "/" + s[i]);   
  15.                 if(f.isDirectory()) {   
  16.                     System.out.println(s[i]+" : 디렉토리");   
  17.                 } else {   
  18.                     System.out.println(s[i]+" : 파일");   
  19.                 }   
  20.             }   
  21.         } else {   
  22.             System.out.println("지정한 "+ directory +"는 디렉토리가 아님");   
  23.         }   
  24.     }   
  25.        
  26. }  

    2) "c:/My Utilities" 파일에 관한 정보를 출력한다. File 클래스에서 제공하는 메소드를 사용하여 파일과 관련된 정보를 출력한다.
·미리보기 | 소스복사·
  1. import java.io.File;   
  2.   
  3. public class FileDirDemo2 {   
  4.     static void p(String s) {   
  5.         System.out.println(s);   
  6.     }   
  7.        
  8.     public static void main(String sgrs[]) {   
  9.         File fl = new File("c:/My Utilities");   
  10.        
  11.         p("파일 이름 : " + fl.getName());   
  12.         p("파일 경로 : " + fl.getPath());   
  13.         p("절대 경로 : " + fl.getAbsolutePath());   
  14.         p(fl.exists() ? "파일 존재" : "파일 없슴");   
  15.         p(fl.canWrite() ? "수정 가능" : "수정 불가능");   
  16.         p(fl.canRead() ? "읽기 가능" : "읽기 불가능");   
  17.         p(fl.isDirectory() ? "디렉토리" : "디렉토리아님");   
  18.         p(fl.isFile() ? "파일" : "파일 아님");   
  19.         p(fl.isAbsolute() ? "절대 경로" : "상대 경로");   
  20.         p("1970년 1월 1일부터 파일이 마지막 수정된 날짜까지의 밀리초 : " + fl.lastModified());   
  21.         p("파일의 크기 : " + fl.length() + " Bytes");   
  22.     }   
  23. }  

2. FileWriter 클래스와 FileReader 클래스
    문자열을 파일로 저장하고, 저장된 파일을 읽어들여 화면에 파일의 내용을 출력하는 프로그램이다. 첫번째 프로그램은 실행명령의 매개 변수로 파일이름을 받아 파일을 생성하고 파일에 문자열을 출력한다. 두 번째 프로그램은 실행 명령의 매개변수로부터 파일이름을 받아들여 파일을 열고 파일의 내용을 읽어 화면에 출력하는 프로그램이다.
·미리보기 | 소스복사·
  1. import java.io.FileWriter;   
  2.   
  3. public class FileWriterDemo {   
  4.     public static void main(String args[]) throws Exception {   
  5.         String source = "어른이 되어서야 진정한 돈의 가치를 알게 되었는데n"  
  6.             + "만약 좋아하는 사람에게 어떤일이 생겼을때n"           
  7.             + "아무것도 생각하지 말고 잠시 쉬라고 말할 수 있을 정도는n"  
  8.             + "왠지 가지고 싶잖아n";   
  9.        
  10.         char intxt[] = new char[source.length()];   
  11.         source.getChars(0, source.length(), intxt, 0);   
  12.         //입력 문자열을 intxt 문자 배열에 저장   
  13.        
  14.         FileWriter fw = new FileWriter("c:/FileWriterDemo.txt");   
  15.         fw.write(intxt);   
  16.         //문자 배열의 내용을 파일에 출력   
  17.         fw.close();   
  18.     }   
  19. }  
·미리보기 | 소스복사·
  1. import java.io.FileReader;   
  2.   
  3. public class FileReaderDemo {   
  4.     public static void main(String args[]) throws Exception {   
  5.     //입력시 발생할 수 있는 예외를 허용한다.   
  6.     FileReader fr = new FileReader("c:/FileWriterDemo.txt");   
  7.     //매개변수로 파일이름을 받아들여 FileReader 객체 생성   
  8.     int i;   
  9.     while((i = fr.read()) != -1) {   
  10.         System.out.print((char)i);   
  11.         //파일의 끝까지 한 문자씩을 읽어들여 출력   
  12.     }   
  13.     fr.close();   
  14.     }   
  15. }  

3. BufferedWriter 클래스와 BufferedReader 클래스
    위의 FileWriter 클래스와 FileReader 클래스의 예제를 BufferedWriter 클래스와 BufferedReader 클래스를 이용하여 재작성하였다.
·미리보기 | 소스복사·
  1. import java.io.BufferedWriter;   
  2. import java.io.FileWriter;   
  3.   
  4. public class BufferedWriterDemo {   
  5.     public static void main(String args[]) throws Exception {   
  6.         String source = "사람들은 저마다 무한한 수의 상자를 가지고 있다.n"  
  7.             + "하지만 그 모든 상자들을 열어보기엔 인간의 생은 너무나 짧다.n"           
  8.             + "만약 누군가 옆에 있어준다면, 단지 옆에만 있어준다면n"  
  9.             + "그리고 함께 싸워줄 수만 있다면... 그런 사람이 있다면...n";   
  10.         char intxt[] = new char[source.length()];   
  11.         source.getChars(0, source.length(), intxt, 0);   
  12.         //입력하고자 하는 문자열을 문자 배열 intxt에 저장   
  13.         FileWriter fw = new FileWriter("c:/BufferedWriterDemo.txt");   
  14.         BufferedWriter bw = new BufferedWriter(fw);   
  15.         //버퍼를 사용한 객체 bw 생성   
  16.        
  17.         bw.write(intxt);   
  18.         //문자 배열의 내용을 파일에 출력   
  19.         bw.close();   
  20.     }   
  21. }  
·미리보기 | 소스복사·
  1. import java.io.BufferedReader;   
  2. import java.io.FileReader;   
  3.   
  4. public class BufferedReaderDemo {   
  5.     public static void main(String args[]) throws Exception {   
  6.         FileReader fr = new FileReader("c:/BufferedWriterDemo.txt");   
  7.         BufferedReader br = new BufferedReader(fr);   
  8.         //버퍼를 이용한 입력을 위해 br 객체 생성   
  9.         String s;   
  10.         while((s = br.readLine()) != null) {   
  11.             System.out.println(s);   
  12.             //파일의 끝까지 한 라인씩 출력   
  13.         }   
  14.         br.close();   
  15.     }   
  16. }  

4. PrintWriter 클래스
    PrintWriter 객체를 생성한 다음 print(), println() 두 개의 메소드를 사용하여 다양한 데이터를 출력하는 프로그램이다.
·미리보기 | 소스복사·
  1. import java.io.PrintWriter;   
  2.   
  3. public class PrintWriterDemo {   
  4.     public static void main(String args[]) throws Exception {   
  5.         PrintWriter pw = new PrintWriter(System.out);   
  6.         //표준 출력(모니터 출력)을 의미하는   
  7.         //System.out(PrintWriter 객체)을 이용하여   
  8.         //객체 pw를 생성   
  9.         pw.print("알기 쉽게 해설한 자바!n");   
  10.         pw.println('A');   
  11.         pw.println(500 + 500);   
  12.         pw.println(40000L);   
  13.         pw.println(12.34f);   
  14.         pw.println(12.34);   
  15.         pw.println(new Integer("1999"));   
  16.         pw.close();   
  17.     }   
  18. }  
번호 제목 글쓴이 날짜 조회 수
347 java.util.Optional 에서의 map() 함수의 이해 황제낙엽 2026.06.24 666
346 linux(ubuntu) 의 jdk 21 이 설정된 환경에서 jdk 17 로 다운그레이드 절차 황제낙엽 2025.09.22 1532
345 [ChatGPT] javax.* 패키지와 jakarta.* 패키지의 혼합 사용 방안 황제낙엽 2025.04.15 2459
344 [ChatGPT] *.servlet.http.HttpServlet 클래스를 사용할 수 있는 주요 WAS 목록 황제낙엽 2025.04.14 2038
343 [ChatGPT] JDBC API에서 java.sql과 javax.sql 패키지의 차이점 황제낙엽 2025.01.31 2218
342 jakarta.servlet 패키지를 이용한 File Upload 구현 (2024.03.03, Servlet 5.0) 황제낙엽 2025.01.02 2310
341 [ChatGPT] Java EE가 Jakarta EE로 전환 황제낙엽 2025.01.01 2525
340 [ChatGPT] File.delete() 함수로 파일 삭제가 되지 않는 경우 황제낙엽 2024.12.10 2809
339 [ChatGPT] <jsp:include>에서 flush="true"를 설정시의 몇 가지 문제점 과 대안 황제낙엽 2024.07.19 2493
338 [Copilot] JSP, Servlet, web.xml, mysql 한글 설정 황제낙엽 2024.07.12 2555
337 Base64 클래스의 encode, decode 에서 URL-safe 황제낙엽 2024.07.10 2624
336 [Copilot] JSP 에서 다른 페이지를 현재 페이지에 포함시키는 문법 (include) 황제낙엽 2024.06.26 2570
335 Exception 출력에 대한 고찰 황제낙엽 2024.06.10 2198
334 google-auth-library-oauth2-http 라이브러리 다운로드 황제낙엽 2023.11.19 4026
333 firebase-admin-java 라이브러리 다운로드 (firebase admin sdk library) 황제낙엽 2023.11.19 2805
332 Enum 활용 (개인블로그, Effective Java) file 황제낙엽 2023.11.02 2760
331 Enum 활용 (우아한기술블로그) file 황제낙엽 2023.11.02 2790
330 servlet name 에 camel case 를 사용해서는 안되는 이유 황제낙엽 2023.10.24 2508
329 org.apache.commons.fileupload.servlet.ServletFileUpload 이용 예시 황제낙엽 2023.08.25 3336
328 ServletFileUpload.parseRequest() 실행 결과 리스트가 비어있는 오류 황제낙엽 2023.08.25 2935