try {
File file = new File(path)
// 取得文件名。
String filename = file.getName()
// 取得文件的后缀名。
String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase()
// 以流的形式下载文件。
InputStream fis = new BufferedInputStream(new FileInputStream(path))
byte[] buffer = new byte[fis.available()]
fis.read(buffer)
fis.close()
// 清空response
response.reset()
// 设置response的Header
response.addHeader("Content-Disposition", "attachmentfilename=" + new String(filename.getBytes()))
response.addHeader("Content-Length", "" + file.length())
OutputStream toClient = new BufferedOutputStream(response.getOutputStream())
response.setContentType("application/octet-stream")
toClient.write(buffer)
toClient.flush()
toClient.close()
} catch (IOException ex) {
ex.printStackTrace()
}
return response
}
会不会是多线程同时下载一张图片?
inputStream = conn.getInputStream()
如果有两个线程同时将这个流写入到指定文件应该就会出错了吧!
之前写一个下载APK文件会出现APK解析错误,借此思路,希望能帮到你!~
java编程方法下载服务器上的文件到本地客服端,代码如下:
import java.io.BufferedWriterimport java.io.File
import java.io.FileOutputStream
import java.io.FileWriter
import java.io.IOException
import java.io.InputStream
import java.net.URL
import java.net.URLConnection
public class DownLoad {
public static void downloadFile(URL theURL, String filePath) throws IOException {
File dirFile = new File(filePath)
if(!dirFile.exists()){
//文件路径不存在时,自动创建目录
dirFile.mkdir()
}
//从服务器上获取图片并保存
URLConnection connection = theURL.openConnection()
InputStream in = connection.getInputStream()
FileOutputStream os = new FileOutputStream(filePath+"\\123.png")
byte[] buffer = new byte[4 * 1024]
int read
while ((read = in.read(buffer)) > 0) {
os.write(buffer, 0, read)
}
os.close()
in.close()
}
public static void main(String[] args) {
//下面添加服务器的IP地址和端口,以及要下载的文件路径
String urlPath = "http://服务器IP地址:端口/image/123.png"
//下面代码是下载到本地的位置
String filePath = "d:\\excel"
URL url = new URL(urlPath)
try {
downloadFile(url,filePath)
} catch (IOException e) {
e.printStackTrace()
}
}
}
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)