자바 IO 흐름 의 노드 흐름 과 문자 흐름 에 관 한 지식 총화

파일
file 은 파일 과 디 렉 터 리 경로 이름 의 추상 적 인 표현 입 니 다.
1.1 File 의 사용법
사용법:

File file = new File("   ");

// 
File file = new File("L:\\FileTestDemo\\AAA\\aaa.txt");
메모:windows 에서 경로 명 은 하나의\를 사용 할 수 없습니다.하나의\는 전의 문자 로 사용 할 수 있 습 니 다\\,//또는/1.2 File 의 일반적인 방법
1.boolean createNewFile()
이 이름 을 가 진 파일 이 존재 하지 않 을 때 추상 적 인 경로 이름 으로 새 빈 파일 을 원자 방식 으로 만 듭 니 다.메모:폴 더 를 만 들 수 없습니다.파일 만 만 들 수 있 습 니 다.

 System.out.println(file.createNewFile());  //true or false        
2.boolean delete()
이 추상 적 인 경로 이름 이 표시 하 는 파일 이나 디 렉 터 리 를 삭제 합 니 다.

System.out.println(file.delete());
3.boolean exists()
이 추상 적 인 경로 이름 이 표시 하 는 파일 이나 디 렉 터 리 가 존재 하 는 지 테스트 합 니 다.

if(!file.exists()){
    System.out.println("     ,  "+ file.createNewFile());
}
4.String getName()
이 추상 적 인 경로 이름 이 표시 하 는 파일 이나 디 렉 터 리 의 이름 을 되 돌려 줍 니 다.

System.out.println(file.getName());
5.long lastModified()
이 추상 적 인 경로 이름 을 수정 한 파일 의 시간 을 되 돌려 줍 니 다.

System.out.println(new SimpleDateFormat().format(new Date(file.lastModified())));
IO 흐름
File 클래스:
파일 외부 내용 만 조작 할 수 있 고 파일 내부 내용 의 읽 기와 쓰 기 를 조작 할 수 없습니다.
흐름:
데 이 터 는 선 입 선 출 순서 로 전송 되 고 흐름 은 파이프 이 며 데 이 터 를 전송 하 는 것 이다.
IO 흐름:
자바 는 io 패 키 지 를 제공 하여 여러 가지 종 류 를 제공 하 였 으 며,많은 기능 을 제공 하여 데이터 의 읽 기와 쓰 기 를 실현 할 수 있 습 니 다.
2.1 흐름 의 개념
데이터 소스 는 물탱크 와 같 고 흐름 은 수도관 에서 흐 르 는 물 과 같 으 며 프로그램 은 우리 의 최종 사용자 입 니 다.흐름 은 추상 적 이 고 동태 적 인 개념 으로 연속 적 이 고 동태 적 인 데이터 집합 이다.
2.2 흐름 의 분류
흐름 에 따라 입력 흐름(InputStream 과 Reader)과 출력 흐름(OutputStream 과 Writer)으로 나 눌 수 있 습 니 다.
동작 단위 에 따라 바이트 흐름(InputStream 과 OutputStream)과 문자 흐름(Reader 와 Writer)으로 나 눌 수 있 습 니 다.
기능 에 따라 노드 흐름(데이터 원본 이나 목적지 에서 데 이 터 를 직접 읽 고 쓸 수 있 음)과 기능 흐름(처리 흐름 의 흐름 이다.다른 흐름 에 대한 처 리 를 통 해 프로그램의 성능 을 향상 시킨다)
2.3 IO 조작 절차
모든 조작 을 하기 전에 먼저 목적(읽 기 또는 쓰기)을 명 확 히 하고 원본(읽 기)을 찾 아 목적 지 를 정확하게 찾 아야 한다(쓰기).
1.연결 만 들 기:이 단 계 는 흐름 을 얻 기 위해 서 입 니 다.만약 에 파일 이 라면 파일 을 메모리 형성 대상 으로 추상 화해 야 합 니 다.후기 에 도 다른 데이터 소스 일 수 있 습 니 다.
2.흐름 선택:읽 기와 쓰기,데이터 유닛 과 기능 측면 에서 고려 합 니 다.입력|출력,바이트|문자,결점 흐름|처리 흐름.
3.실행 동작:읽 을 것 은 읽 고 쓸 것 은 쓴다.한꺼번에 완성 하 는 게 좋 을 것 같 아서 순환 이 필요 해 요.
4.자원 방출:프로그램 에서 열 린 파일 IO 자원 은 메모리 에 있 는 자원 에 속 하지 않 습 니 다.쓰레기 수 거 는 회수 할 수 없습니다.닫 기 를 표시 해 야 합 니 다.
2.4 기본 입력 흐름(InputStream 과 Reader)
int read()->반환 값 은 이번에 읽 은 내용(한 바이트 의 값,한 문자 의 값)입 니 다.
int read(by te[]car)->읽 은 바이트 를 car 배열 에 임시 저장 하고 실제 읽 은 바이트 수 를 되 돌려 줍 니 다.
int reade(char[]car)->읽 은 문 자 를 car 배열 에 임시 저장 하고 실제 읽 은 문자 수 를 되 돌려 줍 니 다.
어떤 방식 으로 든 read(),read([])에서 파일 을 읽 습 니 다.-1 은 파일 끝 에 읽 는 것 을 의미 합 니 다.
문자->텍스트 만 조작 할 수 있 습 니 다.직접 읽 을 수 있 는 것 은 문자 입 니 다.
바이트->임의의 데이터,하지만 동작 이 문자 라면 변환 이 필요 합 니 다(번 거 로 움)
단일 바이트 읽 기
InputStream 을 예 로 들 면 Reader 는 마찬가지 입 니 다.

public class IOTest {
    public static void main(String[] args) throws IOException {
        //   ,    
        InputStream is = new FileInputStream("L:\\FileTestDemo\\123.txt");

        //        read(), read([])     , -1,            
        //  result   -1   
        int result = -1;
        while((result = is.read()) != -1){
            System.out.println((char)result);
        }

        //  
        is.close();

    }
}
다 중 바이트 읽 기

public class IOTest {
    public static void main(String[] args) throws IOException {
        //   ,    
        InputStream is = new FileInputStream("L:\\FileTestDemo\\123.txt");

        //      
        byte[] car = new byte[1024];
        int len = -1;
        // result   -1   
        while ((len = is.read(car)) != -1){
            System.out.println(new String(car,0,len));
        }

        //  
        is.close();

    }
}
2.5 기본 출력 흐름(Output Stream 과 Writer)
OutputStream 을 예 로 들 면 Writer 는 마찬가지 입 니 다.
메모:출력 흐름 을 닫 기 전에 캐 시 영역 데 이 터 를 비 워 야 합 니 다.
flush()는 일반적으로 IO 에 사 용 됩 니 다.즉,버퍼 데 이 터 를 비 우 는 것 입 니 다.즉,읽 기와 쓰기 흐름 을 사용 할 때 사실은 데 이 터 는 메모리 에 먼저 읽 힌 다음 에 데이터 로 파일 에 쓰 는 것 입 니 다.데 이 터 를 다 읽 었 을 때 데 이 터 를 다 썼 다 는 것 은 아 닙 니 다.메모리 라 는 버퍼 에 남 을 수도 있 기 때 문 입 니 다.이 럴 때 close()방법 을 사용 하여 읽 기와 쓰기 흐름 을 닫 으 면 이 부분의 데 이 터 를 잃 어 버 리 므 로 읽 기와 쓰기 흐름 을 닫 기 전에 flush()를 사용 하고 데 이 터 를 비 워 야 합 니 다.
단일 바이트 쓰기

public class OutputStream01 {

    public static void main(String[] args) throws IOException {
           ,    
        OutputStream os = new FileOutputStream("L:\\FileTestDemo\\abc.txt",true);
        //    
        os.write('a');

        //   
        os.flush();
        //  
        os.close();
    }
}

다 중 바이트 입력

public class OutputStream02 {

    public static void main(String[] args) throws IOException {
        //     
        OutputStream os = new FileOutputStream("L:\\FileTestDemo\\abc.txt");

        //       
        String str = "    
" + " ?
" + "\t\t\t , sir"; // byte[] arr = str.getBytes(); // os.write(arr); // os.flush(); // os.close(); } }
2.6 입 출력 공동 사용
InputStream 과 OutputStream 을 예 로 들 면

public class In_Out {
    public static void main(String[] args){
		//       
        InputStream is = null;
        OutputStream os = null;
        try {
            //     
            is = new FileInputStream("L:\\FileTestDemo\\aaa.txt");
            os = new FileOutputStream("L:\\FileTestDemo\\abc\\bbb.txt");

            //      
            byte[] arr = new byte[1024];

            int len = -1;

            while ((len = is.read(arr)) != -1){
                //write(byte[] b, int off, int len)       off            len        
                os.write(arr,0,len);
            }

            //  
            os.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //   ,   
            //      
            if(os != null){
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            //      
            if(is != null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}
2.7 이상 처리
IO 흐름 을 사용 할 때 컴 파일 시 이상 이 발생 할 수 있 으 며,이상 을 던 지 거나 이상 을 캡 처 하여 처리 할 수 있 습 니 다.
이상 을 던지다

public class IOTest {
    
    public static void main(String[] args) throws IOException {
        //                (FileNotFoundException)  
        //       (throw)  
        InputStream is = new FileInputStream("L:\\FileTestDemo\\123.txt");
    }
}
캡 처 이상

public class IOTest {
    public static void main(String[] args){
    	//  try...carch...     
        try {
            InputStream is = new FileInputStream("L:\\FileTestDemo\\123.txt");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }
}
2.8 바이트 흐름 과 문자 흐름 의 차이
바이트 흐름 과 문자 흐름 의 차이 점:
1.읽 고 쓰 는 바이트 수가 다르다.
2.문자 흐름 은 블록 읽 기와 쓰기 이 고 바이트 흐름 은 바이트 읽 기와 쓰기 이다.
3.문자 흐름 에 캐 시 가 있 고 바이트 흐름 이 없습니다.
자바 흐름 은 처리 에 있어 서 문자 흐름 과 바이트 흐름 으로 나 뉜 다.문자 흐름 처리 부 서 는 2 개의 바이트 의 유 니 코드 문자 로 문자,문자 배열 또는 문자열 을 각각 조작 하고 바이트 흐름 처리 부 서 는 1 개의 바이트 로 바이트 와 바이트 배열 을 조작 합 니 다.
문자 흐름 과 바이트 흐름 은 하나의 속성 범위 가 작고 하나의 속성 범위 가 넓 으 며 문자 흐름 은 문자 라 는 유형 만 있 을 수 있 습 니 다.그러나 바이트 흐름 에 서 는 문자 일 수 있 고 바 이 너 리 파일 일 수 있 으 며 오디 오 일 수 있 으 며 여러 가지 유형 일 수 있 습 니 다.바이트 형식 에 맞 으 면 바이트 흐름 을 연결 할 수 있 고 문자 흐름 은 문자 만 연결 할 수 있 습 니 다.
자바 IO 흐름 의 노드 흐름 과 문자 흐름 에 관 한 지식 을 정리 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 노드 흐름 과 문자 흐름 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기