System.out.println("Hello, World");






Posted by 김마농
public class ObjectStreamTest {
	private static String fileName = "D:\\person.obj";//매개변수 받은 객체를 파일로 출력
	public static void writeobject(Object obj){
		//인수로 받은 객체를 person.obj에 출력
		//ObjectOutputStream 이용, 객체를 출력 - 객체 직렬화, 출력 대상 : instance 변수의 값들( attribute)
		
		ObjectOutputStream oos =null;
		try {
			//연결하면서 필터까지 추가한 내용
			oos = new ObjectOutputStream(new FileOutputStream(fileName));
			//쓰기작업시작-writeObject(object)
			oos.writeObject(obj);
			//매개변수로 받은 객체를 넘겨준다.
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(oos!=null)
			{
				try {
					oos.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}		
	}
	public static Object readObject(){
		//person.obj파일에 젖아된 객체 정보를 읽어들여 다시 객체로 만든다.
		//ObjectInputStream - 객체를 입력받는 메소드 : 객체 역직렬화
		//메소드 : readObject() : Objectream
		ObjectInputStream ois = null;
		Object obj = null;
		try {
			ois = new ObjectInputStream (new FileInputStream(fileName));
			//읽기
			obj = ois.readObject();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(ois!=null)
			{
				try {
					ois.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		return obj;
		
	}
	public static void main(String[] args) {
		//PersonDTO p = new PersonDTO("id-111","112312","홍길동",123);
		//writeobject(p);//직렬화가 안되서 Exception오류가 나게 된다.
		Object obj = readObject();
		PersonDTO dto = (PersonDTO)obj;
		System.out.println(dto);
	}
}
Posted by 김마농
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class ObjectStreamTest2 {
	private static String fileName = "D:\\person.obj";//매개변수 받은 객체를 파일로 출력
	public static void writeobject(Object obj){
		//인수로 받은 객체를 person.obj에 출력
		//ObjectOutputStream 이용, 객체를 출력 - 객체 직렬화, 출력 대상 : instance 변수의 값들( attribute)
		
		ObjectOutputStream oos =null;
		try {
			//연결하면서 필터까지 추가한 내용
			oos = new ObjectOutputStream(new FileOutputStream(fileName));
			//쓰기작업시작-writeObject(object)
			oos.writeObject(obj);
			//매개변수로 받은 객체를 넘겨준다.
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(oos!=null)
			{
				try {
					oos.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}		
	}

	public static void main(String[] args) {
		PersonDTO p = new PersonDTO("id-111","112312","홍길동",123);
		writeobject(p);//직렬화가 안되서 Exception오류가 나게 된다.		
	}
}



import java.io.Serializable;

public class PersonDTO implements Serializable{
	private String id;
	private String password;
	private String name;
	private int age;
	//생성자, setter, getter tostring
	public PersonDTO(){}
	public PersonDTO(String id, String password, String name, int age) {
		this.id = id;
		this.password = password;
		this.name = name;
		this.age = age;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "PersonDTO [id=" + id + ", password=" + password + ", name="
				+ name + ", age=" + age + "]";
	}
}
Posted by 김마농
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class BufferReaderWriterTest {
	public static void main(String[] args) {
		//Filter Steram을 이용한 입출력
		//BufferedRedaer와 PrintWriter를 이용해 news.txt->news3.txt로 입출/력
		FileReader fr = null;
		FileWriter fw = null;
		//Filter스트림
		BufferedReader br = null;//버퍼를 이용, 라인단위로 읽는 기능
		PrintWriter pw = null;//데이터 포맷에 맞게 출력, println(), print()
		try{
			//1-1 d연결
			fr = new FileReader("D:\\news.txt");
			fw = new FileWriter("D:\\news4.txt");
			//1-2 filter 스트림 추가
			br = new BufferedReader(fr);
			//fr 노드 스트림에다가 BufferedReader 필터를 추가해준다.
			pw = new PrintWriter(fw);//한꺼번에 출력하는는 경우에 쓰인다.
			
			//pw = new PrintWriter(fw,true);//true : auto flush - println()하면 바로 출력된다.
			//쓸때마다 출력해야 하는 경우는(true)를 더하면 된다, 바로바로 출력하는 채팅에 쓰이게 된다.
			//fw 노드 스트림에다가 PrintWriter 필터를 추가해준다,
			//2. read(BufferedReader)와 writer(PrintWriter)를 해준다.
			String str = br.readLine();//엔터를 기준으로 읽어들임(엔터는 안읽는다.)
			while(str!=null)//EOF : null을 리턴
			{
				pw.println(str);
				System.out.println(str);
				str=br.readLine();				
			}
			//pw.flush();//buffer에 있는 데이터를 최종 출력장소로 밀어내는 메소드
		}catch(FileNotFoundException e){
			e.printStackTrace();
		}catch(IOException e){
			e.printStackTrace();	
		}finally{
			//3. 연결끊기 - Filter를 끊으면 된다.
			if(br!=null)
			{
				try{
				br.close();
				}catch(IOException e){
				e.printStackTrace();
				}
			}
			if(pw!=null){
				pw.close();//throws안함, 내부적으로 처리함
			}
		}
	}
}
Posted by 김마농


자바에서는 모든 입출력에서 스트림이라는 개념을 사용하는데, 이것은 C언어와 유닉스에서 온 개념이다. 자바에서는 위와 같은 그림처럼 스트림을 직접 파일에 연결되는 '노드 스트림'과 노드 스트림에 연결하여 다른 처리를 해 주는 '필터 스트림'으로 구분하고 있다.(파일이라고 했지만, 자바에서는 키보드, 모니터, 메모리, 네트워크 상의 리소스도 마찬가지로 취급하고 있다.)

위 그림에서는 노드 스트림과 필터 스트림을 자세히 표현한 그림으로, 역시 바이트 데이터의 저수지(파일이나 키보드 모니터, 메모리, 인터넷 리소스 등)에 직접 연결되어 있는 부분이 노드 스트림이다. 대표적인 입력 노드 스트림은 InputStream 클래스다. 키보드에서 입려을 받는 System.in도 바로 이 InputStream 클래스의 객체다. 대표적인 출력 노드 스트림은 OutoutStream 클래스다. 저수지 데이터로부터 데이터를 하나 가져오면 당연히 노드 스트림을 통하게 된다. 

◎ 입력 스트림

InputStream 클래스는 바이트 단위로 읽기 때문에 한글 등의 이유로 캐릭터 단위로 읽으려면 InputStreamReader 클래스를 연결해서 사용해야 한다. InputStream 클래스는 추상 클래스이기 때문에 바로 사용하는 것은 불가능하고, 반드시 상속받아서 쓰거나 InputStream 클래스의 서브 클래스를 사용해야 한다. 
다음은 InputStream 클래스의 객체인 System.in에 InputStreamReader 클래스의 객체를 연결하여 키보드로부터 문자열을 입력받는 예제다.

InputStreamReaderTest.java

import java.io.IOException;
import java.io.InputStreamReader;

public class InputStreamReaderTest {
	public static void main(String[] args) {
		InputStreamReader in = new InputStreamReader(System.in);		
		try{
			while(true){
				int i=in.read();
			char myChar=(char)i;
			System.out.print(myChar);
		}
	}catch(IOException e){
		System.out.println(e.toString());			
		}
	}
}

◎ FileInputStream과 FileReader
FileInput 클래스는 Input클래스의 서브 클래스로, 파일로부터 바이트 단위로 읽는 입력 스트림이다. 캐릭터 단위로 읽으려면 FIleReader클래스를 사용하면 된다. FileInputStream 클래슨 파일 이름을 바로 적거나 FIle클래스를 사용해서 생성 할 수 있다.

◎ BufferedInputStream과 BufferedReader
BufferedInputStream 클래스는 InputStream 클래스에 버퍼를 추가한 스트림이다. BufferedInputStream 클래스를 사용하면, 프로그램에서 데이터를 읽어올때 요청한 데이터보다 많은 양의 데이터를 미리 버퍼에 읽어 놓았다가 다음 요청때 돌려주기 때문에 프로그램이 기다리는 시간이 줄어들어서 전체적인 수행속도가 빨라 진다. BufferedInputStream 클래스는 필터 스트림이기 때문에 그 자체로는 쓸 수 없고, InputStream 클래스의 객체를 인수로 받아서 생성 해야 한다. 이와 마찬가지로 InputStreamReader클래스에 버퍼를 추가 한 것이 BufferedReader 클래스이다. BufferedReader 클래스를 생성할 때 InputStreamReader 클래스의 객체를 인수로 주면, 버퍼를 사용하면서 캐릭터 단위로 데이터를 읽는 스트림이 생성된다. 

◎ OutputStream과 OutputStreamWriter
OutputStream클래스는 대표적은 출력 스트림이다. OutputStream 클래스는 바이트 단위로 데이터를 출력하기 때문에, 한글과 같은 비영어궈 문자를 출력하려면 캐릭터 단위로 출력하는 OutputStreamWriter 클래스를 연결해서 사용해야 한다. OutputStream 클래스도 InputStream 클래스와 마찬가지로 추상 클래스이기 때문에 바로 사용할수는 없고, 서브 클래스를 사용해야 한다. OutputStream 클래스는 모든 출력 스트림의 슈퍼클래스이기 때문에 OutputStream 클래스의 모든 메소드는 서브클래스에서 사용할 수 있다.

◎ FileOutPutStream과 FilwWriter
FileOutputStream 클래스는 OutputStream 클래스의 서브 클래스로, 파일에 바이트 단위로 출력하는 출력 스트림이다. 캐릭터 단위로 출력하려면 FileWriter 클래스를 사용하면 된다.

◎ BufferedOutputStream과 BufferedWriter
BufferedOutputStream 클래스는 BufferedInputStream 클래스처럼 버퍼 처리를 하는 출력 스트림이다. 프로그램에서 BufferedOutputStream 클래스로 만든 출력 슽림에 출력을 하면, 바로 장치(파일이나 모니터, 네트워크 소켓등)에 출력되지 않고, 메모리의 버퍼에 출력된다. 버퍼가 가득 차면 자동으로 장치에 출력되기 때문에 프로그램이 매번 저장장치에 기록되길 기다리는 OutputStream에 비해 전체적인 수행 속도가 빨라진다.
BufferedOutputStream 클래스는 필터 스트림이기 때문에 그 자체로는 쓸 수 없고, OutputStream 클래스의 객체를 인수로 주어 생성해야 한다. 이와 마찬가지로 OutputStreamWriter 클래스에 버퍼 처리를 한 것이 BufferedWriter클래스다. BufferedWriter 클래스를 생성 할 때 OutputStreamWriter 클래스의 객체를 인수로 주면, 버퍼를 사용하면서 캐릭터 단위로 출력하는 스트림이 생성된다. 

◎ DataOutputStream
입력 스트림인 DataInputStream 클래스의 대응 되는 출력 스트림이 DataOutputStream 클래스다. DataOutputStream 클래스는 자바의 기본 데이터형으로 출력할 수 있도록 해주는 출력 스트림이다. DataInputStream 클래스처럼 DataOutputStream 클래스도 바이트 단위로 데이터를 처리하기 때문에 별로 인듯 하다. DataInputStream 클래스보다는 PrintStream클래스나 PrintWriter클래스를 사용하는 편이 좋다.

◎ PrintStream와 PrintWriter
PrintStream 클래스는 필터 스트림으로 OutputStream 클래스의 객체를 인수로 받아서 생성할 수 있다. PrintStream 클래스는 OutputStrema 클래스의 모든 기능을 단 2개의 메소드인 print()메소드와 println() 메소드로 출력 할 수 있도록 해주는 강력하고 편리한 출력 스트림이다. PrintStream 클래스의 print()메소드와 println()메소드는 메소드 오버로딩을 이ㅛㅇㅇ해서 주어지는 데이터형에 상관없이 출력 할 수 있도록 되어 있다.

Posted by 김마농

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileReaderWriterTest{
		public static void main(String[] args) {
			FileReader fr = null;
			FileWriter fw = null;
			//d:\news.txt를 읽어서 news2.txt로 쓴다 char[]로 받아서 쓰이게 된당
			try{
				fr = new FileReader("D:\\news.txt");
				fw = new FileWriter("D:\\news2.txt");
				long l1 = System.currentTimeMillis();
				char[] data = new char[100];
				int length = fr.read(data);
				int count=0;
				
				while(length !=-1){
					fw.write(data,0,length);
					length = fr.read(data);
					count++;
				}
				long l2 = System.currentTimeMillis();
				System.out.println(l2-l1);
				System.out.println(count);					
				
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}finally{
				if(fr!=null){//만약 fi가 null이 아닐 경우
					try {
						fr.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
				if(fw!=null){
					try {
						fw.close();
					} catch (IOException e) {
						e.printStackTrace();
						}
					}
				}	
			}
		}

Posted by 김마농

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class FileStreamArrayTest { public static void main(String[] args) { FileInputStream fi = null; FileOutputStream fo = null; try { //1. 연결 fi = new FileInputStream("D:\\Desert.jpg");//연결 fo = new FileOutputStream("D:\\Desert3.jpg");//덮어쓰기 //fo=new FileOutputStream("D:\\Desert2.jpg",true);//이어쓰기 파일크기가 2배가 되어버린다. //2. I/O작업(읽는 작업, 출력작업) long l1 = System.currentTimeMillis(); int count =0; byte[] buff = new byte[10000];//읽은 데이터는 배열에 있다. int length = fi.read(buff);//몇바이트 읽었는지 while(length != -1){ fo.write(buff,0,length);// 0번부터 length까지 쓰게 된다. 그냥 buff로 쓰면 기존에 있던 바이트들이 중복처리되서 파일 용량이 이전것보다 크게 써지게 된다.

length =fi.read(buff);// count++; } long l2 = System.currentTimeMillis(); System.out.println(l2-l1+"초"); System.out.println("반복횟수 : "+count); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(fi!=null){//만약 fi가 null이 아닐 경우 try { fi.close(); } catch (IOException e) { e.printStackTrace(); } } if(fo!=null){ try { fo.close(); } catch (IOException e) { e.printStackTrace(); } } } } }


Posted by 김마농

<파일을 읽어서 출력해주기 : 파일 복사>


import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class FileStreamTest { public static void main(String[] args) { FileInputStream fi = null; FileOutputStream fo = null; try { //1. 연결 fi = new FileInputStream("D:\\Desert.jpg");//연결 //fo = new FileOutputStream("D:\\Desert2.jpg");//덮어쓰기 fo=new FileOutputStream("D:\\Desert2.jpg",true);//이어쓰기 파일크기가 2배가 되어버린다. 만약 텍스트파일을 이어쓰기 했을 경우 텍스트 파일이 복사된다. //2. I/O작업(읽는 작업, 출력작업) int data = fi.read();//1바이트, 여기서 먼저 1바이트 읽게 된다. int count =0; long l1 = System.currentTimeMillis();//시간 계산 while(data!=-1){ fo.write(data);//출력 count++; data = fi.read();//입력 } long l2 = System.currentTimeMillis();//시간 계산 System.out.println("읽은 횟수 : "+count); System.out.println((l2-l1)/1000+"초"); //3. 연결 끊기 //fi.close();//연결 끊기 } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(fi!=null){//만약 fi가 null이 아닐 경우 try { fi.close(); } catch (IOException e) { e.printStackTrace(); } } if(fo!=null){ try { fo.close(); } catch (IOException e) { e.printStackTrace(); } } } } }


Posted by 김마농

파일을 byte하나씩 받기


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileStreamTest {
	public static void main(String[] args) {
		FileInputStream fi = null;
		try {
			//1. 연결
			fi = new FileInputStream("D:\\Desert.jpg");//연결
			//2. I/O작업(읽는 작업)
		int data = fi.read();//1바이트 
		int count =0;
		long l1 = System.currentTimeMillis();//시간 계산
		while(data!=-1){
			count++;
			data = fi.read();
		}
		long l2 = System.currentTimeMillis();//시간 계산
		System.out.println("읽은 횟수 : "+count);
		System.out.println((l2-l1)/1000+"초");
		//3. 연결 끊기
		//fi.close();//연결 끊기
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(fi!=null){//만약 fi가 null이 아닐 경우
				try {
					fi.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}		
	}
}


Posted by 김마농

뽀삐

260 RP

50%

130 RP

아무무

585 RP

50%

292 RP

베이가

585 RP

50%

292 RP

블리츠크랭크

975 RP

50%

487 RP

코르키

975 RP

50%

487 RP

럼블

975 RP

50%

487 RP                    

킨tt

전투 예복 뽀삐

975 RP

50%

487 RP

작은 기사 아무무

975 RP

50%

487 RP

회색수염 베이가

975 RP

50%

487 RP

필트오버 커스텀 하이머딩거

975 RP

50%

487 RP

스피드광 코르키

520 RP

50%

260 RP

빌지워터 럼블

520 RP

50%

260 RP

 

 

◆ 챔피언

 

Poppy(뽀삐)Amumu(아무무)Veigar(베이가)Blitzcrank(블리츠크랭크)Corki(코르키)Rumble(럼블)

 

 

◆ 스킨


 
 
 

 

원본 크기로 보시려면 그림을 클릭하세요. 원본 크기로 보시려면 그림을 클릭하세요.
원본 크기로 보시려면 그림을 클릭하세요.

Posted by 김마농