在Java中实现文件上传和下载功能可以使用Java的文件操作类和网络编程类来实现。下面是一个简单的示例代码:
文件上传功能:
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FileUploader {
public static void main(String[] args) {
String fileToUpload = "path/to/file.txt";
String uploadUrl = "http://example.com/upload";
try {
// 创建URL对象
URL url = new URL(uploadUrl);
// 创建连接对象
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 设置请求方法为POST
connection.setRequestMethod("POST");
// 允许输入输出流
connection.setDoInput(true);
connection.setDoOutput(true);
// 创建数据输出流
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
// 读取文件内容并写入输出流
Path path = Paths.get(fileToUpload);
byte[] fileContent = Files.readAllBytes(path);
outputStream.write(fileContent);
// 关闭输出流
outputStream.flush();
outputStream.close();
// 获取响应码
int responseCode = connection.getResponseCode();
System.out.println("Response Code: " + responseCode);
// 关闭连接
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
文件下载功能:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FileDownloader {
public static void main(String[] args) {
String downloadUrl = "http://example.com/file.txt";
String savePath = "path/to/save/file.txt";
try {
// 创建URL对象
URL url = new URL(downloadUrl);
// 创建连接对象
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 获取输入流
InputStream inputStream = connection.getInputStream();
// 创建文件输出流
FileOutputStream fileOutputStream = new FileOutputStream(savePath);
// 读取输入流内容并写入文件输出流
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, bytesRead);
}
// 关闭流
inputStream.close();
fileOutputStream.close();
connection.disconnect();
System.out.println("File downloaded successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上代码中的fileToUpload
和downloadUrl
分别是要上传和下载的文件的路径或URL。在实际使用时,需要将它们替换为实际的文件路径或URL。同时,还需要注意文件路径的正确性和访问权限。