컴퓨터프로그래밍/JAVA

Java - 38.File I/O

zelkova 2011. 9. 12. 09:28

이제부터 파일의 입출력에 대해서 다루겠따 ^^
우선은 파일의 출력부터 공부해보자.

예제와 설명
import java.io.*;
 
public class ReadFile {

  public static void main(String[] args) {
   ReadFile readFile = new ReadFile();
   File file = new File("ReadFile.java");//클래스파일과 동일한 경로에 있는 ReadFile로 접근하기위해 인스턴트 변수 file에 저장
   
   if(file.exists()){ //파일존재확인
    readFile.metaData(file); //metaData 메서드 호출
    readFile.fileContents(file); //fileContents 메서드 호출
   } else
    System.out.println("파일이 존재하지 않습니다.");
  }
  
  public void metaData(File file){
   System.out.println("파일       이름: " + file.getName());
   System.out.print("읽기: " + file.canRead()+ " / "); //파일읽기 가능여부 확인 true면 참 false면 거짓
   System.out.println("쓰기: " + file.canWrite()); //파일쓰기 가능여부 확인 true면 참 false면 거짓
   System.out.println("파일 절대경로: " + file.getAbsolutePath());
   System.out.println("파일 상대경로: " + file.getPath());
  }
  
  public void fileContents(File file){
   if(!file.canRead()) //파일이 없으면 readFile.filecontents로 넘어감
    return;
   
   //FileInputStream fileIs = null; //File.io.FileInputStream인스턴트 변수선언
   FileReader fr = null;//FileInputStream 바이트 기반대신 문자 형식을 사용해 한글깨짐방지
   System.out.println("파일 내용");  
   try{   
    //fileIs = new FileInputStream(file); //File.io.FileInputStream인스턴트 변수선언
    fr = new FileReader(file);//한글깨짐방지 인스턴트변수 선언
    while(true){ //파일의 내용을 끝까지 읽어드리는 반복문
     int i = fr.read();
     if(i == -1)
      break;
     System.out.print((char)i);
    }
   }catch(FileNotFoundException fne){
    System.out.println("FileIODemo1.java_Line35_FileNotFoundException이 발생했습니다.");
   }catch(IOException ioe){
    System.out.println("FileIODemo1.java_Line37_IOException이 발생했습니다.");
   }finally{
    if(fr != null){
     try{    
      fr.close();
     }catch(IOException ioe){
      System.out.println("ReadFile.java_Line43_IOException이 발생했습니다.");
     }
    }
   }
  }
 }


복수문자를 읽어오는 코드
import java.io.*; 
public class ReadFile {

 public static void main(String[] args) {
   ReadFile readFile = new ReadFile();
   File file = new File("ReadFile.java");//클래스파일과 동일한 경로에 있는 ReadFile로 접근하기위해 인스턴트 변수 file에 저장
   
   if(file.exists()){ //파일존재확인
    readFile.metaData(file); //metaData 메서드 호출
    readFile.fileContents(file); //fileContents 메서드 호출
   } else
    System.out.println("파일이 존재하지 않습니다.");
  }
  
  public void metaData(File file){
   System.out.println("파일       이름: " + file.getName());
   System.out.print("파일 읽기: " + file.canRead()+ " / ");
   System.out.println("파일 쓰기: " + file.canWrite());
   System.out.println("파일 절대경로: " + file.getAbsolutePath());
   System.out.println("파일 상대경로: " + file.getPath());
  }
  
  public void fileContents(File file){
   if(!file.canRead()) //파일이 없으면 readFile.filecontents로 넘어감
    return;
   
   //FileInputStream fileIs = null; //File.io.FileInputStream인스턴트 변수선언
   FileReader fr = null;//FileInputStream 바이트 기반대신 문자 형식을 사용해 한글깨짐방지
   System.out.println("파일 내용");  
   try{   
    fr = new FileReader(file);

    char[] buffer = new char[512]; // 파일에서 512개의 문자를 한번에 읽어오기
    while(fr.read(buffer) != -1) // 읽어오기
     System.out.print(buffer);
    
   }catch(FileNotFoundException fne){
    System.out.println("FileIODemo1.java_Line35_FileNotFoundException이 발생했습니다.");
   }catch(IOException ioe){
    System.out.println("FileIODemo1.java_Line37_IOException이 발생했습니다.");
   }finally{
    if(fr != null){
     try{    
      fr.close();
     }catch(IOException ioe){
      System.out.println("ReadFile.java_Line43_IOException이 발생했습니다.");
     }
    }
   }
  }
 }


복수 바이트를 읽어오는 코드
import java.io.*; 
public class ReadFile {
  public static void main(String[] args) {
   ReadFile readFile = new ReadFile();
   File file = new File("ReadFile.java");//클래스파일과 동일한 경로에 있는 ReadFile로 접근하기위해 인스턴트 변수 file에 저장
   
   if(file.exists()){ //파일존재확인
    readFile.metaData(file); //metaData 메서드 호출
    readFile.fileContents(file); //fileContents 메서드 호출
   } else
    System.out.println("파일이 존재하지 않습니다.");
  }
  
  public void metaData(File file){
   System.out.println("파일       이름: " + file.getName());
   System.out.print("파일 읽기: " + file.canRead()+ " / ");
   System.out.println("파일 쓰기: " + file.canWrite());
   System.out.println("파일 절대경로: " + file.getAbsolutePath());
   System.out.println("파일 상대경로: " + file.getPath());
  }
  
  public void fileContents(File file){
   if(!file.canRead()) //파일이 없으면 readFile.filecontents로 넘어감
    return;
   
   //FileInputStream fileIs = null; //File.io.FileInputStream인스턴트 변수선언
   FileInputStream fis = null;
   System.out.println("파일 내용");  
   try{   

    fis = new FileInputStream(file);
    int readCount = 0;

    byte[] buffer = new byte[512]; //// 파일에서 512개의 바이트를 한번에 읽어오기
    while((readCount = fis.read(buffer)) != -1)
    / System.out.write(buffer, 0, readCount); 
    
   }catch(FileNotFoundException fne){
    System.out.println("FileIODemo1.java_Line35_FileNotFoundException이 발생했습니다.");
   }catch(IOException ioe){
    System.out.println("FileIODemo1.java_Line37_IOException이 발생했습니다.");
   }finally{
    if(fr != null){
     try{    
      fr.close();
     }catch(IOException ioe){
      System.out.println("ReadFile.java_Line43_IOException이 발생했습니다.");
     }
    }
   }
  }
 }



 

반응형

'컴퓨터프로그래밍 > JAVA' 카테고리의 다른 글

JAVA 구축후 테스트하기  (0) 2013.07.31
JAVA 환경구축하기  (0) 2013.07.31
Java - 37.다양한 스트림  (0) 2011.08.09
Java - 36.자바I/O개요  (0) 2011.08.08
Java - 35.예외 처리 개요  (0) 2011.08.08