在之前的分享中,曾經提到一個文件上傳的問題
/data/user/0/cn.jltf.neighbor/files/534.jpg: open failed: ENOENT (No such file)
該文件不存在。但實際上該文件存在并能顯示出來。后來發現是鴻蒙系統的權限問題,只能訪問私有目錄下的文件。
解決方法:將文件復制到私有目錄下,再進行訪問。
代碼如下:
HiLog.info(label,"私有目錄:"+this.getFilesDir());
HiLog.info(label,"緩存目錄:"+this.getCacheDir());
HiLog.info(label,"數據目錄:"+this.getDataDir());
HiLog.info(label,"外部目錄:"+this.getExternalCacheDir());
HiLog.info(label,"引用目錄:"+this.getPreferencesDir());
HiLog.info(label,"同步目錄:"+this.getDistributedDir());
HiLog.info(label,"應用目錄:"+this.getDir("",Context.MODE_PRIVATE));
File[]dataChildFiles=this.getDataDir().listFiles();
for(FiledataChildFile:dataChildFiles){
HiLog.info(label,"數據子目錄:"+dataChildFile);
}
File[]externalFiles=this.getExternalMediaDirs();
for(FileexternalFile:externalFiles){
HiLog.info(label,"外部Media目錄:"+externalFile);
}
try{
//該目錄和JSUI中的internal://cache/目錄是一個目錄
Filefile=newFile(this.getCacheDir()+"/111.jpg");
HiLog.info(label,"文件路徑:"+file);
if(file.exists())
{
HiLog.info(label,"文件已存在");
return;
}
HiLog.info(label,"文件不存在");
InputStreaminputStream=getContext().getResourceManager().getResource(ResourceTable.Media_icon);
ImageSource.SourceOptionssrcOpts=newImageSource.SourceOptions();
srcOpts.formatHint="image/jpeg";
ImageSourceimageSource=ImageSource.create(inputStream,srcOpts);
//設置圖片參數
ImageSource.DecodingOptionsdecodingOptions=newImageSource.DecodingOptions();
decodingOptions.desiredSize=newSize(200,200);
imageSource.createPixelmap(decodingOptions);
//該種方式直接訪問internal://app目錄//FileOutputStreamfos=newFileOutputStream("/data/user/0/com.example.abilitytransfertest/files//111.jpg");
FileOutputStreamfos=newFileOutputStream(this.getCacheDir()+"/111.jpg");
ImagePackerimagePacker=ImagePacker.create();
ImagePacker.PackingOptionspackingOptions=newImagePacker.PackingOptions();
packingOptions.format="image/jpeg";
packingOptions.quality=90;
booleanresult=imagePacker.initializePacking(fos,packingOptions);
if(result)
{
result=imagePacker.addImage(imageSource.createPixelmap(decodingOptions));
if(result){
longdataSize=imagePacker.finalizePacking();
HiLog.info(label,"文件大?。?+dataSize);
}
}
fos.flush();
fos.close();
if(file.exists())
{
HiLog.info(label,"文件已存在");
return;
}
}catch(IOException|NotExistExceptione){
HiLog.info(label,"文件保存出錯:"+e.getMessage());
e.printStackTrace();
}
Filefile=this.getCacheDir();
File[]files=file.listFiles();
for(Filefile1:files){
HiLog.info(label,"File目錄:"+file1);
}
審核編輯:符乾江
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
應用開發
+關注
關注
0文章
59瀏覽量
9433 -
HarmonyOS
+關注
關注
79文章
1982瀏覽量
30573
發布評論請先 登錄
相關推薦
鴻蒙原生應用元服務開發-Web上傳文件
Web組件支持前端頁面選擇文件上傳功能,應用開發者可以使用onShowFileSelector()接口來處理前端頁面文件上傳的請求。
下面的
發表于 05-08 11:17
HarmonyOS應用開發-okhttp3.0快速集合文件上傳
應用開發過程中經常需要進行文件上傳功能開發,通過okhttp3.0可以快速集合完成文件上傳的功能。代碼如下:OkHttpClient htt
發表于 03-08 14:23
HarmonyOS應用開發-圖片文件上傳錯誤交流
在開發過程中,遇到一個上傳文件時的錯誤,特地在此記錄一下。相關代碼:/** 圖片上傳* */public static void sendMultipart(String urlAdd
發表于 03-25 11:06
HarmonyOS應用開發-文件上傳問題的解決方式
在之前的分享中,曾經提到一個文件上傳的問題/data/user/0/cn.jltf.neighbor/files/534.jpg: open failed: ENOENT (No such file
發表于 04-20 15:27
怎樣通過遠程連接方式控制云端真機對HarmonyOS應用進行測試呢
通過遠程連接方式控制云端真機對HarmonyOS應用進行測試,包括HarmonyOS應用在遠程真機上的安裝、測試等,當前支持的真機設備包含TV、Lite Wearable設備、Phone和平板電腦
發表于 05-24 14:45
基于Iframe內聯框架的異步文件上傳與刪除
在Weh應用程序開發過程中,文件上傳功能是個很常用又非常重要的功能,它要處理的內容主要包括:如何將上傳的文件以
發表于 11-11 10:20
?5次下載
HarmonyOS應用開發okhttp3.0快速集合文件上傳
? ? ? ? ?應用開發過程中經常需要進行文件上傳功能開發,通過okhttp3.0可以快速集合完成文件上傳的功能。 代碼如下: OkHtt
HarmonyOS應用開發—圖片文件上傳錯誤交流
在開發過程中,遇到一個上傳文件時的錯誤,特地在此記錄一下。 相關代碼: /** 圖片上傳* */public static void sendMultipart(String urlA
前端文件上傳的幾種交互造輪子
可以用剪貼板功能讓自己的 cv 實現文件上傳,于是自己就整合了目前幾種文件上傳的交互方式,碼了一個支持 cv 的 vue3
評論