java獲取本地文件和遠(yuǎn)程文件的方式代碼示例
問題背景:
我們項目開發(fā)的時候,經(jīng)常會讀取文件,如果文件在本服務(wù)器,則直接用new File() 讀取即可,但是有時候需要遠(yuǎn)程讀取文件,比如讀取分布式存儲服務(wù)器的內(nèi)容或者是別人家的圖片資源,這個時候new File就無法滿足要求了。
下面提供列出獲取遠(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("獲取文件失敗,無法連接到文件資源") } 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獲取本地文件和遠(yuǎn)程文件的文章就介紹到這了,更多相關(guān)java獲取本地文件和遠(yuǎn)程文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java日常練習(xí)題,每天進(jìn)步一點點(23)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07java JDBC系列教程之JDBC類的簡析與JDBC的基礎(chǔ)操作
這篇文章主要介紹了java JDBC系列教程之JDBC類的簡析與JDBC的基礎(chǔ)操作,本文分步驟通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07SpringAOP中基于注解實現(xiàn)通用日志打印方法詳解
這篇文章主要介紹了SpringAOP中基于注解實現(xiàn)通用日志打印方法詳解,在日常開發(fā)中,項目里日志是必不可少的,一般有業(yè)務(wù)日志,數(shù)據(jù)庫日志,異常日志等,主要用于幫助程序猿后期排查一些生產(chǎn)中的bug,需要的朋友可以參考下2023-12-12