java獲取本地文件和遠(yuǎn)程文件的方式代碼示例
問題背景:
我們項(xiàng)目開發(fā)的時(shí)候,經(jīng)常會(huì)讀取文件,如果文件在本服務(wù)器,則直接用new File() 讀取即可,但是有時(shí)候需要遠(yuǎn)程讀取文件,比如讀取分布式存儲(chǔ)服務(wù)器的內(nèi)容或者是別人家的圖片資源,這個(gè)時(shí)候new File就無(wú)法滿足要求了。
下面提供列出獲取遠(yuǎn)程文件和本地文件的方式
1、獲取遠(yuǎn)程文件
如圖片路徑為 https://kk360.com/user/20230622/gm/30293817365.jpg
import java.net.HttpURLConnection;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
public byte[] getFile(String filePath) {
int HttpResult; // 服務(wù)器返回的狀態(tài)
byte[] bytes = new byte[204800]; //設(shè)置數(shù)組大小
try
{
URL url =new URL(filePath); // 創(chuàng)建URL
URLConnection urlconn = url.openConnection(); // 試圖連接并取得返回狀態(tài)碼
urlconn.connect();
HttpURLConnection httpconn =(HttpURLConnection)urlconn;
HttpResult = httpconn.getResponseCode();
if(HttpResult != HttpURLConnection.HTTP_OK) {
log.error("獲取文件失敗,無(wú)法連接到文件資源")
} else {
int filesize = urlconn.getContentLength(); // 取數(shù)據(jù)長(zhǎng)度
log.info("取數(shù)據(jù)長(zhǎng)度:{}",filesize)
urlconn.getInputStream();
InputStream inputStream = urlconn.getInputStream();
//如果這里只需要返回stream,則直接返回 不需要轉(zhuǎn)byte[]
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
int ch;
while ((ch = inputStream.read()) != -1) {
swapStream.write(ch);
}
bytes = swapStream.toByteArray();
}
log.info("文件大小,length:{}",bytes.length);
}
catch (Exception e) {
log.error("獲取文件異常,e:{}",e);
}
return bytes;
}2、獲取本地文件
File file = new File("/resource/static/sdsadc12.jpg");
InputStream in = null;
try {
// 一次讀多個(gè)字節(jié)
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(file);
// 讀入多個(gè)字節(jié)到字節(jié)數(shù)組中,byteread為一次讀入的字節(jié)數(shù)
while ((byteread = in.read(tempbytes)) != -1) {
System.out.write(tempbytes, 0, byteread);
}
log.info("文件大小:{}"+file.length());
} catch (Exception ee) {
log.error("異常:{}",ee);
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e1) {
}
}
}總結(jié)
到此這篇關(guān)于java獲取本地文件和遠(yuǎn)程文件的文章就介紹到這了,更多相關(guān)java獲取本地文件和遠(yuǎn)程文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(23)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07
java JDBC系列教程之JDBC類的簡(jiǎn)析與JDBC的基礎(chǔ)操作
這篇文章主要介紹了java JDBC系列教程之JDBC類的簡(jiǎn)析與JDBC的基礎(chǔ)操作,本文分步驟通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
java控制臺(tái)實(shí)現(xiàn)可視化日歷小程序
這篇文章主要為大家詳細(xì)介紹了java控制臺(tái)實(shí)現(xiàn)可視化日歷小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
SpringAOP中基于注解實(shí)現(xiàn)通用日志打印方法詳解
這篇文章主要介紹了SpringAOP中基于注解實(shí)現(xiàn)通用日志打印方法詳解,在日常開發(fā)中,項(xiàng)目里日志是必不可少的,一般有業(yè)務(wù)日志,數(shù)據(jù)庫(kù)日志,異常日志等,主要用于幫助程序猿后期排查一些生產(chǎn)中的bug,需要的朋友可以參考下2023-12-12
Spring?@Scheduled定時(shí)器注解使用方式
這篇文章主要介紹了Spring?@Scheduled定時(shí)器注解使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08

