*****
io
1. Stream 구조
(1) 단방향
(2) 원칙적으로 순차적 - 예외도 있다.
(3) 지연발생가능
(4) 어떤 장치를 사용하던 간에 사용법은 동일하다. - 스트림은 일종의 필터. 하나만 알면 지장이 없다.
(5) 자바에서는 입출력에 관련된 모든 클래스들을 Java.io 패키지에서 제공.
(6) nio = new input output - 개별적으로 파보기
2. 자바에서 제공하는 Stream 방식
(1) Byte Stream 방식 - 데이터를 1byte씩 보내고 받는 방식
- InputStream
read()
- OutputStream
write()
(2) Character Stream 방식 - 데이터를 한문자씩 보내고 받는 방식 ( at least 2byte )
-Reader (문자단위로 사용할때 가장 부모클래스)
read()
-Writer
write()
(3) PrintStream 방식 - 출력을 조금 더 쉽게 하기 위한 . ex) println, print
-print()
-println() - 모니터, 파일, 네트워크등 출력 가능
3. 자주 사용할만한 클래스들
(1) FileInputStream , FileOutputStream --]Filter class --> Data persistance -->> Database ( too heavy and big ) then, -- > File
(2) DataInputStream , DataOutputStream --]
기본형 8 타입의 데이터를 주고 받을때 사용이 편하다.
(3) RandomAccessFile - 유일하게 임의로 접근하는 방법을 제공한다.
java.lang.Object
java.io.RandomAccessFile
---------> 입출력 X. 랜덤으로 일을 처리하기 때문에 인풋, 아웃풋 스트림을 상속받지 않는다.
(4) PrintWriter
(5) ObjectInputStream , ObjectOutputStream - byteStream 방식
(6) File
=============================================================
*****Thread - 한 작업
1) processs program 파일이 저장만 되어있으면 프로그램, 실행이 되면 프로세스
2) 단일 프로세스 멀티프로세스
하나의 프로세스 에서 실횅하는 작업 단위
3)
멀티쓰레드 -
4: 든프로그램은 반드시 하나이상의 쓰레드를 포함
============================================================================================================================================================
-----------------------------과제 ----------------------------------------
입력값 1,2,3,4,5 를 주고 5초 카운팅 한후 결과값이 나오게 만들어라
package prjThread;
class ThreadDemo44 extends Thread implements Runnable {
public ThreadDemo44(String string) {
}
@Override
public void run() {
int sum = 0;
for (int i = 1; i <= 5; i++) {
try {
sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
sum += i;
System.out.println("입력 : " + i);
}
try {
sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("\n결과 : " + sum);
}
}
public class ThreadTest44 {
public static void main(String[] args) {
ThreadDemo44 t1 = new ThreadDemo44(null);
Thread tt1 = new Thread(t1);
tt1.start();
System.out.println("잠시 기다려주세요");
int cnt = 0;
do {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print("...\t");
cnt++;
} while (cnt < 5);
}
}
-----------------------------------------------------------------------------
------------------------------------------------------------------------------
텍스트파일 cmd 로 복사하기
package CharStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class FileTest22 {
public static void main(String[] args) throws IOException {
// TODO test.txt 내용을 test2.txt로 복사
FileInputStream fin = new FileInputStream("E:\\Test3.txt");
FileOutputStream fout = new FileOutputStream("E:\\Test4.txt",true);//트루로 내용 중첩
int input = 0;
OutputStream os = System.out;
while (true) {
input = fin.read();
if (input == -1) // -1 이라는 값은 ctrl + z 일때 -1이 전달되고 실제로 -1 을쓰면 2글자로인식한다
break;
os.write((char) input);
os.flush();
fout.write((char) input);
}
fin.close();
fout.close();
}
}
댓글 없음:
댓글 쓰기