본문 바로가기

   
Programming/Java

13일차!

반응형
스트림 - 한바이트씩이동 한글자씩이동 텍스트형식만 처리가능 텍스트데이타 바이너리 데이타만 가능

package io;

import java.io.File;
import java.util.Date;

public class FileDemo {

      public static void main(String[] args) throws Exception{
            /*
            * java.io.File
            *  - 파일 정보를 담고 있는 객체를 만들수 있다.
            *  - 파일은 파일과 디렉토리 둘다 포함한다.
            *  - 파일을 생성/삭제, 디렉토리를생성/삭제할수 있다.
            */
           File f = new File( "C:/java_study/나를 읽고 써라.txt" );
           
           String filename = f.getName();
           System. out.println( "파일명:" + filename );
           
            long filesize = f.length();
           System. out.println( "파일사이즈:" + filesize );
           
           String parent = f.getParent();
           System. out.println( "상위경로 : " + parent );
           
           String path = f.getAbsolutePath();
           System. out.println( "파일의 실제위치" + path );
           
           File f2 = new File( "src/io/fileDemo.java" );
           System. out.println( f2.getAbsolutePath()); //실제경로
           System. out.println( f2.getPath()); //내가적은 경로
          System. out.println( "__________________________________" );
           
            long time = f.lastModified();
           System. out.println( "최종 수정일자:" + time );
           Date date = new Date( time);
           System. out.println( date);
          System. out.println( "__________________________________" );
           
           File ff = new File( "C:/java_study/나를만들어라.txt" );
           
            //새로운 파일 생성
            ff.createNewFile();
           
            //새로운 폴더 생성
           File dir = new File( "c:/java_study/temp" );
            dir.mkdir();
           
            //계층적 구조를 가진 폴더 생성
           File dir2 = new File( "c:/java_study/temp/a/b/c/d" );
            dir2.mkdirs();
           
            //파일지우기
           File fff = new File( "c:/java_study/나를지워라.txt" );
            fff.delete();
           
            //폴더지우기
           File fff2 = new File( "c:/java_study/temp/a/b/c/d" );
            fff2.delete();
           
           File fff3 = new File( "c:/");
           
            //특정 폴더안의 파일명, 폴더명을 배열로 제공 받는다.
           String[] filelist = fff3.list();
           
            for(String n : filelist){
                System. out.println( "c밑의 파일 리스트" + n );
           }
          System. out.println( "__________________________________" );
            //특정 폴더안의 있는 각각의 파일이나 디렉토리마다 파일 객체를
           File list = new File( "C:/");
           File[] files  list.listFiles();
           
           
           
            for(File item : files){
                String filelist1 = item.getName();
                 if( item.isFile()){
                     System. out.println( filelist1);
                } else if( item.isDirectory()){
                     System. out.println( "[" + filelist1+ "]");
                }
           }
           
/*결과화면_________________________________________
 파일명:나를 읽고 써라. txt
파일사이즈:19
상위경로 : C:\java_study
파일의 실제위치C:\java_study\나를 읽고 써라. txt
C:\java_study\workspace \util\src\ io\fileDemo.java
src\ io\fileDemo.java
__________________________________
최종 수정일자:1429666288462
Wed Apr 22 10:31:28 KST 2015
__________________________________
c밑의 파일 리스트$Recycle.Bin
c밑의 파일 리스트4-1. txt
c밑의 파일 리스트autoexec.bat
c밑의 파일 리스트Boot
c밑의 파일 리스트 bootmgr
c밑의 파일 리스트BOOTSECT.BAK
c밑의 파일 리스트config.sys
c밑의 파일 리스트Documents and Settings
c밑의 파일 리스트hiberfil.sys
c밑의 파일 리스트Intel
c밑의 파일 리스트java_study
c밑의 파일 리스트pagefile.sys
c밑의 파일 리스트PerfLogs
c밑의 파일 리스트Program Files
c밑의 파일 리스트ProgramData
c밑의 파일 리스트Recovery
c밑의 파일 리스트RHDSetup.log
c밑의 파일 리스트setup.log
c밑의 파일 리스트System Volume Information
c밑의 파일 리스트Users
c밑의 파일 리스트Windows
__________________________________
[$Recycle.Bin]
4-1.txt
autoexec.bat
[Boot]
bootmgr
BOOTSECT.BAK
config.sys
[Documents and Settings]
hiberfil.sys
[Intel]
[java_study]
pagefile.sys
[PerfLogs]
[Program Files]
[ProgramData]
[Recovery]
RHDSetup.log
setup.log
[System Volume Information]
[Users]
[Windows]

 */
           
     }
}


package io;

import java.io.FileOutputStream;
import java.io.FileWriter;

public class FileOutpupStreamDemo {

      public static void main(String[] argsthrows Exception{
           FileOutputStream fos = new FileOutputStream("c:/java_study/fos.txt" );
            //한글자씩 해보자~ 1byte씩
            fos.write( 'a');
            fos.write( 'b');
            fos.write( 'c');
            fos.write( 'd');
            fos.write( 'e');      
            fos.close();
           
           FileWriter fw = new FileWriter("c:/java_study/sample.txt" );
            fw.write( "글씨가 찰때까지 기다리다 fw.flush(); -> 를 실행하면 바로쓰는 작업으로감" );
            //버퍼가 가득차지 않더라도 데이타를 내보내기 한다.
            fw.flush();
            fw.close(); //클로스는 반드시해줘야 한다 사용한 자원의 반납
            //write 8kb를 담을수 있다.그러므로 8026글자가 다차면 실제 파일을 기록하는 작업을 진행함 close전까지
     }
     
}
실행하면 실제 텍스트 파일이 있으면 글자가 적히는걸 볼수 있다.


config.properties
# comment

#operating system connection configuration
db.host=192.168.10.20
db.username= admin
db.password= admin123

#development system connection configuration
#db.host=192.168.10.20
#db.username= admin
#db.password=admin123


package map;

import java.io.FileReader;
import java.util.Properties;

public class PropertiesDemo {
     
      public static void main(String[] argsthrows Exception{
           Properties prop = new Properties();
           
            //properties 파일 정보 가져오기
            prop.load( new FileReader("src/map/config.properties" ));
           
            //지정된 키의 값 조회하기         
           System. out.println( "IP주소:" prop.getProperty( "db.host"));
           System. out.println( "username:" + prop.getProperty( "db.username"));
           System. out.println( "password:" + prop.getProperty( "db.password"));
//결과화면___________________
//         IP주소:192.168.10.20
//         username:admin
//         password:admin123
     }
     
}


data.txt
kim , hong


package io;

import java.io.FileInputStream;

public class FileInputStreamDemo {
     
      public static void main (String[] args throws Exception{
           FileInputStream fis = new FileInputStream("src/io/data.txt" );
           
            //읽어온 값을 담을 변수
            int value = 0;
           
            while( ( fis.read() ) != -1 ){
                System. out.println( fis.read());
           }
           
            fis.close();
     }
     
}


package io;

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class FileCopy {

      public static void main(String[] args) throws Exception{
           FileInputStream fis = new FileInputStream("src/io/FileCopy.java" );
           
           FileOutputStream fos = new FileOutputStream("c:/java_study/FileCopy1.java" );
           
            int value = 0;
            while(( value = fis.read()) != -1){
                 fos.write( value);
           }
            fis.close();
            fos.close();
           
           FileInputStream fis2 = new FileInputStream("src/io/filecopy/FileCopy.java" );
           
           FileOutputStream fos2 = new FileOutputStream("c:/java_study/FileCopy1.java" );
     }
     
      //실행하면 FileCopy.java 가 -> 지정한 폴더에 지정한 이름으로 파일이 복사된다.
     
}


http://www.mvnrepository.com/ --> java 라이브러리가 저장되어 있는 사이트

package io;

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class FileCopy {

      public static void main(String[] args) throws Exception{
           FileInputStream fis = new FileInputStream("src/io/FileCopy.java" );
           
           FileOutputStream fos = new FileOutputStream("c:/java_study/FileCopy1.java" );
           
            int value = 0;
            while(( value = fis.read()) != -1){
                 fos.write( value);
           }
            fis.close();
            fos.close();
           
           System. out.println( "______________________________" );
           
           FileInputStream fis2 = new FileInputStream("c:/java_study/poi.jar" );
           
           FileOutputStream fos2 = new FileOutputStream("c:/java_study/poi2.jar" );
           
            byte[] buf = new byte[1024];
            int length = 0;
           
            while(( length= fis2.read( buf)) != -1) {
                 fos.write( buf, 0, length);
                
           }
            fis2.close();
            fos2.close();
           
     }
     
      //실행하면 FileCopy.java 가 -> 지정한 폴더에 지정한 이름으로 파일이 복사된다.
      //그러나~ 이렇게 구현하면 좋겠지만 많은 사람들이 모든것을 jar로 배포해놓았다 편하게 쓸수 있게
      //그래서 jar를 다운받아서 이용하면 아주 편하게 파일을 읽고 쓸수 있따.
}


package io;

import java.io.File;

import org.apache.commons.io.FileUtils;

public class FileCopy3 {
     
      public static void main(String[] argsthrows Exception{
           File src = new File( "src/io/fileCopy3.java" );
           File dest = new File( "c:/java_study/FileCopy3.java" );
           
           FileUtils. copyFile( srcdest);
     }

}



Class A
공공근로복지>생활지원>직업훈련생 생계비 대부

Interface Serializable 객체를 이동 하기 위해서는 반드시 인터페이스로 시리얼라이즈불로 구현한뒤 정의해야함

네트웍도 모두 스트림이다. 만약 로그인 객체가 있다면 임플리먼트 시리얼라이즈블 네트웍을 통해서 전송이 가능하다. 직렬화라는개념은 객체를 스트림을 사용해서 전송 가능하게 해준다.

서버1, 서버2, 서버3, 서버4 l4 switch 4번쨰 계층 -> ip 주소 OSI란 무엇인가 

OSI 7 Layer

 

1.  Application Layer(응용계층) 7계층사용자 인터페이스의 역할을 담당하는 계층
즉, 사용자들이 이용하는 네트워크 응용프로그램이라고 생각하면 된다.
ex)인터넷 익스플로러
사용자와 가장 가까운 프로토콜 정의
HTTP(80), FTP(20,21), Telnet(23), SMTP(25), DNS(53), TFTP(69)

 

2. Presentation Layer(표현계층)전송하는 데이터의 Format을 결정
다양한 데이터 Format을 일관되게 상호 변환하고 압축 및 암호화 복호화 기능을 수행
AVI, MPEG, ASCII, EBCDIC, JPEG

 

3. Session Layer(세션계층)네트워크 상에서 통신을 할 경우 양쪽 호스트 간에 최초 연결이 되게 하고 통신중 연결이 끊어지지 않도록 유지 시켜주는 역할을 한다.
즉, 통신을 하는 두 호스트들 사이에 세션을 열고,닫고 그리고 관리하는 기능을 담당

 

4. Transport Layer(전송계층)정보를 분할하고, 상대편에 도달하기 전에 다시 합치는 과정을 담당
(Segment : Layer 4의 data 단위)
목적지 컴퓨터에서 발신지 컴퓨터 간의 통신에 있어서 에러제어(error control)와 흐름제어(flow control)을담당
Layer4 프로토콜 : TCP(연결 지향성, 신뢰성)3 hand shake 하고 보낸뒤 받았다는 응답 받는다, UDP(비신뢰성,비연결 지향성)

 

5. Network Layer(네트워크계층)Logical address(IP, IPX)를 담당하고 패킷의 이동 경로를 결정한다
경로 선택, 라우팅, 논리적인 주소를 정의하는 계층
라우팅 프로토콜을 이용해서 best path(최적 경로)선택
Network 계층 장비 : Router

 

6. Data link Layer(데이터링크계층)데이터 링크 계층은 물리적 계층을 통한 데이터 전송에 신뢰성을 제공한다
물리적 주소(MAC)지정, 네트워크 토폴로지, 오류통지, 프레임의 순차적 전송, 흐름제어 등의 기능이 있다.
이 계층에서는 로컬 네트워크에서 프레임을 안전하게 전송하는 것을 목적으로 한다.
Data link 계층 장비 : Switch, Bridge

 

7. Physical Layer(물리계층)네트워크 통신을 위한 물리적인 표준 정의
두컴퓨터 간에 전지적인, 기계적인 그리고 절차적인 연결을 정의하는 계층
(케이블 종류, 데이터 송수신 속도 등)
Physical 계층 장비 : 리피터, 허브


다시 역순으로올라가 전송받은 값을 패킷단위로 쪼개진 것을 다시 합쳐 완성된 data를 받을수 있음

 

OSI7계층.jpg


package io.serialization;

import java.io.Serializable;

public class GameCharacter implements Serializable{
     
      private static final long serialVersionUID = 1;
     
      private String nick;
      private int exp;
      private int mana;
      private int blood;
     
      //transient Car c = new Car();//애는 패스하고 직렬화 하겠다.
     
      public GameCharacter(){}
     
      public GameCharacter(String nick, int exp, int mana, int blood) {
            super();
            this. nick = nick;
            this. exp = exp;
            this. mana = mana;
            this. blood = blood;
     }


      public String getNick() {
            return nick;
     }


      public void setNick(String nick) {
            this. nick = nick;
     }


      public int getExp() {
            return exp;
     }


      public void setExp( int exp) {
            this. exp = exp;
     }


      public int getMana() {
            return mana;
     }


      public void setMana( int mana) {
            this. mana = mana;
     }


      public int getBlood() {
            return blood;
     }


      public void setBlood( int blood) {
            this. blood = blood;
     }


      @Override
      public String toString() {
            return "GameCharacter [nick=" + nick + ", exp=" + exp + ", mana="
                     + mana + ", blood=" + blood + "]";
     }
     
     
     
}


package io.serialization;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class SerializationDemo {
     
      public static void main(String[] args) throws Exception{
           FileOutputStream fos = new FileOutputStream("c:/java_study/sample.kkk" );
           ObjectOutputStream oos = new ObjectOutputStream( fos);
           
           GameCharacter c = new GameCharacter( "zzarungna", 100000, 100, 200);

            //객체를 직렬화하기 객체가저장
            //객체를 스트림을 통해서 전송(내보내기)하기
            oos.writeObject( c);
           
            oos.close();
     }

}



1. Hashset을 활용한 lotto 번호 추출기

   random을 이용하세요.

package work;
public class LootoMain {
      public static void main(String[] args){
           Lootto l = new Lootto();
            l.createLootto();
            l.printLootto();
     }
}


package work;

import java.util.HashSet;
import java.util.Random;

public class Lootto {
//   1. Hashset을 활용한 lotto 번호 추출기
//      random을 이용하세요.
     
      private HashSet<Integer> lootto = new HashSet<Integer>();
      private Random r = new Random();
     
      public Lootto(){} //기본생성자
     
      //로또번호 애드 기능
      public void createLootto(){
            for( int i=0; i<6; i++){
                 lootto.add( r.nextInt(45));
           }
     }
     
      //로또번호 추출 기능
      public void printLootto(){
            for(Integer i : lootto){
                System. out.print( i + " ");
           }
     }
}



2. 상품정보를 scanner로 입력 받아서 관리하기

   - Item 클래스를 사용 합니다.

   - ItemAdminMgr를 만듭니다.

상품정보를 담는 ArrayList<Item> items를 정의한다.

상품을 전달 받아서 items에 저장하는기능

상품명을 전달받아서 해당 상품의 정보를 제공하는 기능

상품명을 전달 받아서 해당 상품을 items에서 삭제하는 기능

remove(int index)

전체 상품 정보를 표시하는 기능

   - ItemAdminDemo를 만듭니다.

ItemAdminMgr 객체를 만듭니다.

Scanner 객체를 만듭니다.


여러번 반복해서 상품정보를 입력 받습니다.

- 상품명을 입력하세요

- 가격을 입력하세요

- 제조사를 입력하세요

- 할인율을 입력하세요

Item 객체를 생성해서 위에서 정의한 ItemAdminMgr의 items에 저장하기

- 특정 상품명의 상품정보 가져와보기

- 특정 상품명의 상품 삭제해보기


package collection.ex;

import java.util.ArrayList;

public class ItemAdminMgr {
      private ArrayList<Item> items = new ArrayList<Item>();
      //상품을 전달 받아서 items에 저장하는기능
      public void addItem(Item item){
            items.add( item);
     }
     
      //상품명을 전달받아서 해당 상품의 정보를 제공하는 기능
      public void viewItem(String item){
            for(Item i : items){
                 if( item.equals( i.getName())){
                     System. out.println( i);
                }
                
           }
     }
      //상품명을 전달 받아서 해당 상품을 items에서 삭제하는 기능 remove(int index)
      public void deleteItem(String item){
            for(Item i : items){
                 if( item. equals( i.getName())){
                      items.remove( i);           
                }
                
           }
     }
     
      //전체 상품 정보를 표시하는 기능
      public void allPrint(){
            for(Item i : items){
                System. out.print( "상품정보 : " + i );
           }
     }
}


package collection.ex;

import java.util.Scanner;

public class ItemAdminDemo {
      public static void main(String[] args){
           ItemAdminMgr admin = new ItemAdminMgr();
           Scanner newitem = new Scanner(System. in);
           
           String name = null;
            int price = 0;
           String maker = null;
            double discountRate = 0;
           
            for( int i=0; i<3; i++){
                System. out.print( "상품명을 입력하세요 : " );
                 name = newitem.next();
                System. out.print( "가격을 입력하세요 : " );
                 price = newitem.nextInt();
                System. out.print( "제조사를 입력하세요 : " );
                 maker = newitem.next();
                System. out.print( "할인율을 입력하세요 : " );
                 discountRate = newitem.nextDouble();
                 admin.addItem( new Item(name, price, maker, discountRate));
           }
           
            //상품명으로 검색
            admin.viewItem( "아이폰6" );
            admin.deleteItem( "갤럭시s7" );
            admin.allPrint();
     }
}


반응형