@java 实现 PTF远程连接带有中文下载文件损失
java 实现 PTF远程连接带有中文下载,解决文件损失
public static void main(String[] args) {
String fileLocal="D://tmp//111111112//tldf//";
String fileLl="111111.pdf";
//需要先将带有中文字符取出
String str="http://...../王尼玛在线.pdf";
// 截取最后一个“/”前面的内容
String newFileSite=str.substring(0,str.lastIndexOf("/"));
// 截取最后一个“/”后面的内容
String newFileName=str.substring(str.lastIndexOf("/")+1);
// 区分.的内容
String newFile= newFileName.replaceAll("[.][^.]+$", "");
cs3(newFileSite, fileLocal, fileLl,newFile,".pdf");
}
private static boolean cs3(String fileUrl, String fileLocal,
String fileLl, String newFile, String asSuffix){
boolean flag = false;
try {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
File file = new File(fileLocal);
if (!file.exists()) {
file.mkdirs();
}
String urlbd = fileLocal + fileLl;
URL url;//拼接一下 newFile 中文乱码转换
url = new URL(fileUrl+URLEncoder.encode(newFile, "UTF-8")+asSuffix);
HttpURLConnection urlCon = (HttpURLConnection) url.openConnection();
urlCon.setConnectTimeout(6000);
urlCon.setReadTimeout(6000);
int code = urlCon.getResponseCode();
if (code != HttpURLConnection.HTTP_OK) {
throw new Exception("文件读取失败");
}
// 读文件流
DataInputStream in = new DataInputStream(urlCon.getInputStream());
DataOutputStream out = new DataOutputStream(new FileOutputStream(urlbd));
byte[] buffer = new byte[2048];
int count = 0;
while ((count = in.read(buffer)) > 0) {
out.write(buffer, 0, count);
}
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (Exception e) {
e.printStackTrace();
}
flag = true;
return flag;
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}