FTP - Client 만들기

Posted by 백창
2014. 11. 28. 15:52 개발/Java
반응형


 개요


 JAVA로 간단한 FTP 클라이언트를 만들어보자



 소스


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import java.io.BufferedInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.Socket;
 
public class Client {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String IP = "127.0.0.1";
        Socket socket = null;
        
        try{
            socket = new Socket(IP, 8521);
            System.out.println("서버와 연결");
            
            FileSender fs = new FileSender(socket);
            fs.start();
            
        }catch(IOException e){
            e.printStackTrace();
        }
    }
 
}
 
class FileSender extends Thread{
    Socket socket;
    DataOutputStream dos;
    FileInputStream fis;
    BufferedInputStream bis;
        
    public FileSender(Socket socket){
        this.socket = socket;
        try{
            //데이터 전송용 스트림 생성
            dos = new DataOutputStream(socket.getOutputStream());
        }catch(IOException e){
            e.printStackTrace();
        }
        
        
    }
    @Override
    public void run(){
        try{
            //String fileName = "test.txt";
            String fileName = "test.png";
 
            
            dos.writeUTF(fileName);
            
            File f =new File(fileName);
            fis = new FileInputStream(f);
            bis = new BufferedInputStream(fis);
            
            int len;
            int size = 4096;
            byte[] data = new byte[size];
            while((len = bis.read(data))!=-1){
                
                dos.write(data,0,len);
            }
            
            dos.flush();
            dos.close();
            bis.close();
            fis.close();
            
        }catch(IOException e){
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}


반응형

'개발 > Java' 카테고리의 다른 글

FTP - server 만들기  (0) 2014.11.28
csv파일 읽기  (0) 2014.09.27
JDOM을 이용한 XML 생성  (0) 2014.09.14
JDOM을 이용한 XML 파싱  (0) 2014.09.14
현재 시간 구하기  (0) 2014.09.14

FTP - server 만들기

Posted by 백창
2014. 11. 28. 15:49 개발/Java
반응형


 개요


 JAVA로 간단한 FTP 서버를 만들어보자.


 소스


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
 
 
public class Server {
 
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        Socket socket = null;
        
        try{
            //리스너 소켓 생성 후 대기
            serverSocket = new ServerSocket(8521);
            System.out.println("#####    서버실행    #####");
            
            //클라이언트와 연결 완료
            socket = serverSocket.accept();
            System.out.println("#####    연결완료    #####");
            
            //수신시작
            FileReceiver fr = new FileReceiver(socket);
            fr.start();
            
        }catch(IOException e){
            e.printStackTrace();
        }
 
    }
 
}
 
class FileReceiver extends Thread{
    Socket socket;
    DataInputStream dis;
    FileOutputStream fos;
    BufferedOutputStream bos;
        
    String filePath = "D:\\ForSecurity\\data\\";
    
    public FileReceiver(Socket socket){
        this.socket = socket;
    }
    
    @Override
    public void run(){
        try{
            System.out.println("#####    수신시작    #####");
            dis = new DataInputStream(socket.getInputStream());
            
            //파일명 수신
            String fName = dis.readUTF();
            System.out.println("#    파일명 : "+fName);
            
            //파일 생성
            File f = new File(filePath+fName);
            fos = new FileOutputStream(f);
            bos = new BufferedOutputStream(fos);
            System.out.println("#    "+fName+" 파일을 생성");
            
            //파일 쓰기
            int len;
            int size=4096;
            byte[] data = new byte[size];
            while((len = dis.read(data))!=-1){
                bos.write(data,0,len);
            }
            
            
            bos.flush();
            bos.close();
            fos.close();
            dis.close();
            
            System.out.println("#    전송완료 사이즈 : "+f.length());
            
        }catch(IOException e){
            e.printStackTrace();
        }
    }
}
 










반응형

'개발 > Java' 카테고리의 다른 글

FTP - Client 만들기  (0) 2014.11.28
csv파일 읽기  (0) 2014.09.27
JDOM을 이용한 XML 생성  (0) 2014.09.14
JDOM을 이용한 XML 파싱  (0) 2014.09.14
현재 시간 구하기  (0) 2014.09.14

csv파일 읽기

Posted by 백창
2014. 9. 27. 12:08 개발/Java
반응형


 개요


다음 소스는 필요에 따라 csv 파일의 헤더만 읽기위해 사용되었다.

 csv파일 전체를 읽기위해서는 



위 소스 부분을 다음과 같이 바꾸어야 한다.




 소스


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
 
 
public class readFile {
    
    /**
     * Header 받아오기
     * */
    @SuppressWarnings("null")
    public ArrayList<String> readHeader(String filePath) throws IOException{
 
        ArrayList<String> ret = new ArrayList<String>();
        File csv = new File(filePath);
        BufferedReader br = new BufferedReader(new FileReader(csv));
        
        String line = "";
        line = br.readLine();
        
        String[] token = line.split(",");
        
        for(String output:token){
            System.out.println(output);
            ret.add(output);
        }
        
        br.close();
        
        return ret;
    }
    
    /**
     * \을 /으로 변환
     * */
    public String convertDash(String fileName){
        String convertFileName="";
        
        convertFileName = fileName.replace('\\','/');
        return convertFileName;
    }
}




 결과



반응형

'개발 > Java' 카테고리의 다른 글

FTP - Client 만들기  (0) 2014.11.28
FTP - server 만들기  (0) 2014.11.28
JDOM을 이용한 XML 생성  (0) 2014.09.14
JDOM을 이용한 XML 파싱  (0) 2014.09.14
현재 시간 구하기  (0) 2014.09.14

JDOM을 이용한 XML 생성

Posted by 백창
2014. 9. 14. 22:41 개발/Java
반응형


 목적


 이전 포스팅에서 출력한 XML 파일에 새로운 정보를 더해 재조립해서 xml형식으로 저장한다.



 Source


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
 
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import org.springframework.ui.ModelMap;
 
public class xmlTest {
    public void testAddName(ModelMap model , String name) throws JDOMException, IOException{
        
        //파일경로
        String filePath="xmlTest.xml";
        String newFilePath = "madeXmlTest.xml";
        
        File file = new File(filePath);
        
        FileInputStream input = new FileInputStream(file);
        SAXBuilder builder = new SAXBuilder();
        Document doc = builder.build(input);
        
        //Root Element
        Element xmlRoot = doc.getRootElement();
        
        //Child Element
        List l_list = xmlRoot.getChildren();
        Element basic = (Element) l_list.get(0);
        
        //New Element
        Element addName = new Element("name");
        addName.setText(name);
        
        //Added Child Element
        basic.addContent(addName);
        
        //FILE IO
        FileWriter writer = new FileWriter(newFilePath);
        
        XMLOutputter outputter = new XMLOutputter();
        try{
            outputter.setFormat(Format.getPrettyFormat());  //개행 등 을 처리
            
            /**
             * 한글 변환! 중요
             * */
            Format fm = outputter.getFormat();
            fm.setEncoding("EUC-KR");
            outputter.setFormat(fm);
            
            outputter.output(doc, writer);
            
            writer.close();
        }catch(Exception e){
            System.err.println(e);
        }
        
    }
}


 Test


이전 XML 파일



새로 생성된 XML 파일



name이라는 부분이 새로 생성되었다.



 힘들었던 부분


XML을 생성하는 경우 인코딩에서 문제가 발생하였다. 


UTF-8 방식으로 저장되는데 한글이 깨져서 출력되는 문제가 발생하여 다음과 같이 해결하였다.



반응형

'개발 > Java' 카테고리의 다른 글

FTP - Client 만들기  (0) 2014.11.28
FTP - server 만들기  (0) 2014.11.28
csv파일 읽기  (0) 2014.09.27
JDOM을 이용한 XML 파싱  (0) 2014.09.14
현재 시간 구하기  (0) 2014.09.14

JDOM을 이용한 XML 파싱

Posted by 백창
2014. 9. 14. 22:31 개발/Java
반응형


 JDOM이란?


 자바에서 제공하는 XML 데이터를 가공하기 위해 제공되는 라이브러리 이다. SAX(Simple API for XML)과 DOM의 장점만을 골라 만든 클래스와 인터페이스를 제공한다.



 Source


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
 
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import org.springframework.ui.ModelMap;
 
public class xmlTest {
    public void test(ModelMap model) throws JDOMException, IOException {
        
        //파일 경로
        String filePath="xmlTest.xml";
        
        File file = new File(filePath);
        
        FileInputStream input = new FileInputStream(file);
        SAXBuilder builder = new SAXBuilder();
        Document doc = builder.build(input);
        
        //Root Element
        Element xmlRoot = doc.getRootElement();
        
        //Child Element
        List l_list = xmlRoot.getChildren();
        Element e_list = (Element) l_list.get(0);
        
        List l_basic = e_list.getChildren();
        
        //Output
        for(int i=0; i<l_basic.size(); i++) {
            Element e_basic = (Element) l_basic.get(i);
            System.out.println("e_basic.getName() : "+e_basic.getName());
            System.out.println("e_basic.getText() : "+e_basic.getText());
            
            model.put(e_basic.getName(), e_basic.getText());
        }
    }
}



 출력할 XML File





 Test




반응형

'개발 > Java' 카테고리의 다른 글

FTP - Client 만들기  (0) 2014.11.28
FTP - server 만들기  (0) 2014.11.28
csv파일 읽기  (0) 2014.09.27
JDOM을 이용한 XML 생성  (0) 2014.09.14
현재 시간 구하기  (0) 2014.09.14

현재 시간 구하기

Posted by 백창
2014. 9. 14. 22:19 개발/Java
반응형


 개요


 Java에서 현재 시간을 구해보자.


 Method


시간을 구하는 method 는 


 System.currentTimeMillis();


이다.


위 method의 리턴형은 long 형이고 1/1000 초 값을 리턴한다. (1970년 1월 1일 부터 계산)



 Source





 Test



반응형

'개발 > Java' 카테고리의 다른 글

FTP - Client 만들기  (0) 2014.11.28
FTP - server 만들기  (0) 2014.11.28
csv파일 읽기  (0) 2014.09.27
JDOM을 이용한 XML 생성  (0) 2014.09.14
JDOM을 이용한 XML 파싱  (0) 2014.09.14