IT_Programming/Java

다중파일 전송

JJun ™ 2008. 8. 20. 08:25

 

 

 

 


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.util.*;
import java.io.*;
import javax.swing.border.*;
import javax.swing.table.DefaultTableModel;

import java.net.*;
import java.io.FileNotFoundException;

public class FileSendClient extends JFrame implements ActionListener{
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
JPanel p4 = new JPanel();
JLabel l = new JLabel("보낼파일");
JTextField tf = new JTextField(20);
FileDialog fd;
JButton b1,b2;
  String directory="", file="";
  DefaultTableModel model;
int fileN=0;// 추가 성택파일수

  /* 아시죠? 프레임을 구성할 컴포넌트들 생성함 */
public FileSendClient() throws Exception{
  this.setLayout(null);
  //추가  JTable
  JTable table = new JTable(model = new DefaultTableModel(null, new String[]{"1","2"}));

b1=new JButton("파일선택");
b1.addActionListener(this);
b2=new JButton("파일전송");
b2.addActionListener(this);
 
p1.add(b1);
add(p1);
p2.add(b2);
add(p2);
p3.add(l);
p3.add(tf);
add(p3);
//추가
p4.add(table);
add(p4);

p1.setBounds(70,70,100,100);
p2.setBounds(200,70,100,100);
p3.setBounds(0,15,340,30);
p4.setBounds(20,130,200,200); //추가

setSize(new Dimension(350, 250));
setVisible(true);
//setResizable(false);
setTitle("파일전송");

}

  /* 버튼에 액션 발생시 실행됨 */
public void actionPerformed(ActionEvent ae){

  try{

  /* 파일선택 다이얼 로그가 뜨고 */
   if(ae.getActionCommand().equals("파일선택")){
    fd=new FileDialog(this,"파일선택",FileDialog.LOAD);/*Load = 파일읽기 작업용*/
    fd.setVisible(true);
tf.setText("");

  /* 선택했을 경우 디렉토리와 파일명이 저장됨 */
 
    directory=fd.getDirectory();
    file=fd.getFile();
    tf.setText(directory+file);
    //추가 선택 파일 table에 추가
    model.addRow(new Object[]{String.valueOf(++fileN), directory+file});


  /* "else" 파일전송버튼 클릭시 실행됨 */
   }else
// 추가 table의 fileN 파일이름으로 전송
for(int i=0;i<fileN;i++){
  String fName=(String) model.getValueAt(i, 1);
System.out.println(fName );


  /* localhost 부분은 상대편 ip 주소를 입력하고, 3333 은 서버측 포트와 동일하게 세팅 */
    Socket s=new Socket("localhost", 3333);

  /* 소켓으로부터 OutputStream 얻어서 파일명을 먼저 보냄 */

  /* 서버측에서 파일 객체 생성시 이용할 것임 */

    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
//    System.out.println("파일명 : "+file);
//    bw.write(file+"\n"); bw.flush();
    //file 대신에 fName 이거 사용하세요.
    System.out.println("파일명 : "+fName);
    bw.write(fName+"\n"); bw.flush();
 
  /* 선택한 파일로 부터 스트림을 읽어들여서 얻어놓은 OutputStream에 연결 */
    DataInputStream dis=new DataInputStream(new FileInputStream(new File(tf.getText())));
    DataOutputStream dos=new DataOutputStream(s.getOutputStream());
 
 
   /* 바이트단위로 읽어서 스트림으로 쓰기 */
 

   /* 자원정리 */
    int b=0;
    while( (b=dis.read()) != -1 ){
     dos.writeByte(b); dos.flush();
    }
 

   /* 자원정리 */
 
    dis=null; dos=null; s=null;
  


System.exit(1);
   }
  }catch(Exception e){
   System.out.println(e);
  }
}

   /* 메인 */
public static void main(String args[]) throws Exception{

  new FileSendClient();
}
}

'IT_Programming > Java' 카테고리의 다른 글

image view (이미지 여러 방향으로 뒤집기)  (0) 2008.08.20
java HTML Parsing & ParserCallback   (0) 2008.08.20
자바 그림 불러오기   (0) 2008.08.20
DefaultTreeCellRenderer test   (0) 2008.08.20
JInternalFrame   (0) 2008.08.20