본문 바로가기

JAVA /IO & NIO

MappedByteBuffer ! MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_ONLY,0,size); 맵모드는 READ_ONLY 와 , PRIVATE , READ_WRITE 가 있고, 읽기전용 읽고 쓰기전용, 프라이빗 전용이있고 0 < 매개변수는, 읽을 시작 지점, size 는 끝 지점 매핑바이트 버퍼는, 채널에 별도 버퍼 공간을 지정하지 않고, 파일을 직접 버퍼처럼 사용하여, 매핑 시켜버린다.. 매개변수 size 는, int형으로 형 변환한 fc.size() 를 이용해야 하고, get() 또는 put() 의 끝은 인터럽트로 처리 하면 된다.. 더보기
NIO , Channel , Charset Packages ! NIO 패키지 : - 데이터의 컨테이너인 버퍼를 정의 하고 있음.. NIO 패키지 안에는 여러 버퍼가 존재하고있당.... 바이트 버퍼 : 기본이 되는 버퍼.. 그외에 데이터형 버퍼 들이 있음.. 바이트 버퍼는.. 다른 데이터형 버퍼로 형 변환이 가능 함 .. 바이트 오더 라는 클래스가 있는데.. 정렬시켜주는 클래스 ! wrap 메소드는. 우선 스태틱 메소드 이고.. 얼로케이트와 마찬가지이지만, 배열단위로 버퍼 할당 가능 Channels 패키지 - 입출력 조작을 실행할 수 있는 엔티티 ! 다중화된 비블록 입출력 조작이 가능 .. 하나의 파일을 여러 쓰레드에서 사용 가능 (FileLock) 더보기
NIO 의 기본 구성 1. 기존 io 와 같이 스트림 연결 예) File f= new File("abc.txt"); FileInputStream fis = new FIleInputStream(f); 2. 스트림에서 채널 얻어 내기. FileChannel fc = fis.getChannel(); 3. 입 출력에 사용할 버퍼 생성 하기.. ByteBuffer bb = ByteBuffer.allocate(2048); 출력할 객체 만들기 FileOutputStream fos = new FileOutputStream(FileDescriptor.out) -> 콘솔 출력 FileChannel fc1 = fos.getChannel(); 채널얻어오고. 읽고 쓰기는 채널을 이용함. fc.read(bb) // 읽고 쓸때 저장공간은 바이트버퍼를 .. 더보기
PipedOutputStream & InputStream 다중 멀티 쓰레드 상태에서의 인아웃 스트림을 연결 시켜주는 스트림 쓰레드간의 스트림을 연결 해야 할때 사용 함 ... PipedOutputStream 생성자 : 디폴트 생성자 , PipedOutputStream(PipedInputStream) 메소드 : close() , connect(PipedInputStream) < 디폴트 생성시에, 인풋스트림과의 연결을 위한 메소드 flush() , write(byte[] , int , int ) , write(); PipedInputStream 위와 같음 예) PipedInputStream pis = new PipedInputStream(); PipedOutputStream pos = new PipedOutputStream(pis); 이 상태에서 pis 를 관리하.. 더보기
SequencInputStream , OutputStream SequencInputStream 은.. 여러개의 InputStream 을 연결 할 수 있다. 여러개를 연결하여, 한번의 연산으로, 처리 할 수 있음 ... 여러개의파일을 연결할때는.. 벡터에 addElement 하고. Enumeration 에, 벡터의 elements 를 뽑아내어서, 매개변수로 넘겨주면 댄당. 예) Vector vc = new Vector(); vc.addElements(new FileInputStream(new File("aaa.txt"))); vc.addElements(new FileInputStream(new File("aaa1.txt"))); vc.addElements(new FileInputStream(new File("aaa2.txt"))); 한 다음. Enumeration .. 더보기
ByteArrayOutputStream & InputStream 아웃풋 스트림 ... 바이트 무한 배열 ... 배열로 얻어올때 메소드 : toByteArray() .. OutputStream 으로 전송할때 쓰는 메소드 : writeTo(OutputStream) 파일이던 네트워크던 간에.. ByteArrayOutputStream 에 바이트 배열로 담아놓을 수 있다........ 받아놓은 바이트 배열을 outputstream 으로 전송할때는 writeTo 메소드 쓰면 된다........... BufferedOutputStream 을 활용하는게 더 낫당.. 바이트단위의 읽고 쓰는게 느리기때문에.. 메모리에 저장 하기 위해 쓰이는듯함. 확실함을 위해, for문으로 2~3번 연속 쓰기 하는게 효과적이라고 함......... 바이트어레이 인풋 스트림. 생성시, 아웃풋스트림의 t.. 더보기