728x90
반응형
java 파일 다운로드 기본 코드
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class FileDownload{
public static void main(String[] args) {
try {
URL u = new URL("url 주소");
String filePath = "파일 다운로드 경로";
File f = new File(filePath);
// 만약 폴더가 없으면 폴더 생성
if(!f.exists()) {
f.mkdirs();
}
downloadTo(u, f, true);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void downloadTo(URL url, File targetFile, boolean isDirectory) throws IOException{
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
int responseCode = httpConn.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
String fileName = "";
String disposition = httpConn.getHeaderField("Content-Disposition");
File saveFilePath=null;
if (isDirectory) {
if (disposition != null) {
int index = disposition.indexOf("filename=");
if (index > 0) {
fileName = disposition.substring(index + 10,
disposition.length() - 1);
}
} else {
String fileURL=url.toString();
fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1, fileURL.length());
int questionIdx=fileName.indexOf("?");
if (questionIdx>=0) {
fileName=fileName.substring(0, questionIdx);
}
fileName=URLDecoder.decode(fileName);
}
saveFilePath = new File(targetFile, fileName);
}
else {
saveFilePath=targetFile;
}
// link URL을 사용하여 input Stream
InputStream inputStream = httpConn.getInputStream();
// file write output stream
FileOutputStream outputStream = new FileOutputStream(saveFilePath);
int bytesRead = -1;
byte[] buffer = new byte[4096];
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
inputStream.close();
// 확인 : 파일 폴더 생성 체크 , 파일 생성되는 지 체크 , 파일 내용 확인
System.out.println("File downloaded to " + saveFilePath);
} else {
System.err.println("No file to download. Server replied HTTP code: " + responseCode);
}
httpConn.disconnect();
}
}
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
자바 Collection(List, Set, Map) 비교 (0) | 2021.12.27 |
---|---|
java 티베로 연결 (0) | 2021.10.15 |
UnknownHostException (0) | 2021.10.13 |
java url생성 (0) | 2021.10.12 |
크론 표현식 (0) | 2021.09.16 |