java獲取本地文件和遠程文件的方式代碼示例
問題背景:
我們項目開發(fā)的時候,經(jīng)常會讀取文件,如果文件在本服務器,則直接用new File() 讀取即可,但是有時候需要遠程讀取文件,比如讀取分布式存儲服務器的內(nèi)容或者是別人家的圖片資源,這個時候new File就無法滿足要求了。
下面提供列出獲取遠程文件和本地文件的方式
1、獲取遠程文件
如圖片路徑為 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; // 服務器返回的狀態(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("獲取文件失敗,無法連接到文件資源")
} else {
int filesize = urlconn.getContentLength(); // 取數(shù)據(jù)長度
log.info("取數(shù)據(jù)長度:{}",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 {
// 一次讀多個字節(jié)
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(file);
// 讀入多個字節(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獲取本地文件和遠程文件的文章就介紹到這了,更多相關(guān)java獲取本地文件和遠程文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java JDBC系列教程之JDBC類的簡析與JDBC的基礎(chǔ)操作
這篇文章主要介紹了java JDBC系列教程之JDBC類的簡析與JDBC的基礎(chǔ)操作,本文分步驟通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
SpringAOP中基于注解實現(xiàn)通用日志打印方法詳解
這篇文章主要介紹了SpringAOP中基于注解實現(xiàn)通用日志打印方法詳解,在日常開發(fā)中,項目里日志是必不可少的,一般有業(yè)務日志,數(shù)據(jù)庫日志,異常日志等,主要用于幫助程序猿后期排查一些生產(chǎn)中的bug,需要的朋友可以參考下2023-12-12

