⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java ftp上传源码.txt

📁 一个利用FTP协议上传文件的JAVA原码
💻 TXT
字号:
// Source File Name: SimpleFTP.java 

package org.jibble.simpleftp; 

import java.io.*; 
import java.net.Socket; 
import java.util.StringTokenizer; 

public class SimpleFTP 
{ 

private Socket socket; 
private BufferedReader reader; 
private BufferedWriter writer; 
private static boolean DEBUG = false; 

public SimpleFTP() 
{ 
socket = null; 
reader = null; 
writer = null; 
} 

public synchronized void connect(String s) 
throws IOException 
{ 
connect(s, 21); 
} 

public synchronized void connect(String s, int i) 
throws IOException 
{ 
connect(s, i, "anonymous", "anonymous"); 
} 

public synchronized void connect(String s, int i, String s1, String s2) 
throws IOException 
{ 
if(socket != null) 
throw new IOException("SimpleFTP is already connected. Disconnect first."); 
socket = new Socket(s, i); 
reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 
String s3 = readLine(); 
if(!s3.startsWith("220 ")) 
throw new IOException("SimpleFTP received an unknown response when connecting to the FTP server: " + s3); 
sendLine("USER " + s1); 
s3 = readLine(); 
if(!s3.startsWith("331 ")) 
throw new IOException("SimpleFTP received an unknown response after sending the user: " + s3); 
sendLine("PASS " + s2); 
s3 = readLine(); 
if(!s3.startsWith("230 ")) 
throw new IOException("SimpleFTP was unable to log in with the supplied password: " + s3); 
else 
return; 
} 

public synchronized void disconnect() 
throws IOException 
{ 
sendLine("QUIT"); 
socket = null; 
break MISSING_BLOCK_LABEL_22; 
Exception exception; 
exception; 
socket = null; 
throw exception; 
} 

public synchronized String pwd() 
throws IOException 
{ 
sendLine("PWD"); 
String s = null; 
String s1 = readLine(); 
if(s1.startsWith("257 ")) 
{ 
int i = s1.indexOf(34); 
int j = s1.indexOf(34, i + 1); 
if(j > 0) 
s = s1.substring(i + 1, j); 
} 
return s; 
} 

public synchronized boolean cwd(String s) 
throws IOException 
{ 
sendLine("CWD " + s); 
String s1 = readLine(); 
return s1.startsWith("250 "); 
} 

public synchronized boolean stor(File file) 
throws IOException 
{ 
if(file.isDirectory()) 
{ 
throw new IOException("SimpleFTP cannot upload a directory."); 
} else 
{ 
String s = file.getName(); 
return stor(((InputStream) (new FileInputStream(file))), s); 
} 
} 

public synchronized boolean stor(InputStream inputstream, String s) 
throws IOException 
{ 
BufferedInputStream bufferedinputstream = new BufferedInputStream(inputstream); 
sendLine("PASV"); 
String s1 = readLine(); 
if(!s1.startsWith("227 ")) 
throw new IOException("SimpleFTP could not request passive mode: " + s1); 
String s2 = null; 
int i = -1; 
int j = s1.indexOf(40); 
int k = s1.indexOf(41, j + 1); 
if(k > 0) 
{ 
String s3 = s1.substring(j + 1, k); 
StringTokenizer stringtokenizer = new StringTokenizer(s3, ","); 
try 
{ 
s2 = stringtokenizer.nextToken() + "." + stringtokenizer.nextToken() + "." + stringtokenizer.nextToken() + "." + stringtokenizer.nextToken(); 
i = Integer.parseInt(stringtokenizer.nextToken()) * 256 + Integer.parseInt(stringtokenizer.nextToken()); 
} 
catch(Exception exception) 
{ 
throw new IOException("SimpleFTP received bad data link information: " + s1); 
} 
} 
sendLine("STOR " + s); 
Socket socket1 = new Socket(s2, i); 
s1 = readLine(); 
if(!s1.startsWith("150 ")) 
throw new IOException("SimpleFTP was not allowed to send the file: " + s1); 
BufferedOutputStream bufferedoutputstream = new BufferedOutputStream(socket1.getOutputStream()); 
byte abyte0[] = new byte[4096]; 
for(int l = 0; (l = bufferedinputstream.read(abyte0)) != -1;) 
bufferedoutputstream.write(abyte0, 0, l); 

bufferedoutputstream.flush(); 
bufferedoutputstream.close(); 
bufferedinputstream.close(); 
s1 = readLine(); 
return s1.startsWith("226 "); 
} 

public synchronized boolean bin() 
throws IOException 
{ 
sendLine("TYPE I"); 
String s = readLine(); 
return s.startsWith("200 "); 
} 

public synchronized boolean ascii() 
throws IOException 
{ 
sendLine("TYPE A"); 
String s = readLine(); 
return s.startsWith("200 "); 
} 

private void sendLine(String s) 
throws IOException 
{ 
if(socket == null) 
throw new IOException("SimpleFTP is not connected."); 
try 
{ 
writer.write(s + "\r\n"); 
writer.flush(); 
if(DEBUG) 
System.out.println("> " + s); 
} 
catch(IOException ioexception) 
{ 
socket = null; 
throw ioexception; 
} 
} 

private String readLine() 
throws IOException 
{ 
String s = reader.readLine(); 
if(DEBUG) 
System.out.println("< " + s); 
return s; 
} 

} 


try { 
SimpleFTP ftp = new SimpleFTP(); 

// Connect to an FTP server on port 21. 
ftp.connect("ftp.somewhere.net", 21, "username", "password"); 

// Set binary mode. 
ftp.bin(); 

// Change to a new working directory on the FTP server. 
ftp.cwd("web"); 

// Upload some files. 
ftp.stor(new File("webcam.jpg")); 
ftp.stor(new File("comicbot-latest.png")); 

// You can also upload from an InputStream, e.g. 
ftp.stor(new FileInputStream(new File("test.png")), "test.png"); 
ftp.stor(someSocket.getInputStream(), "blah.dat"); 

// Quit from the FTP server. 
ftp.disconnect(); 
} 
catch (IOException e) { 
// Jibble. 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -