在之前的分享中,曾經(jīng)提到一個(gè)文件上傳的問(wèn)題
/data/user/0/cn.jltf.neighbor/files/534.jpg: open failed: ENOENT (No such file)
該文件不存在。但實(shí)際上該文件存在并能顯示出來(lái)。后來(lái)發(fā)現(xiàn)是鴻蒙系統(tǒng)的權(quán)限問(wèn)題,只能訪問(wèn)私有目錄下的文件。
解決方法:將文件復(fù)制到私有目錄下,再進(jìn)行訪問(wèn)。
代碼如下:
HiLog.info(label,"私有目錄:"+this.getFilesDir());
HiLog.info(label,"緩存目錄:"+this.getCacheDir());
HiLog.info(label,"數(shù)據(jù)目錄:"+this.getDataDir());
HiLog.info(label,"外部目錄:"+this.getExternalCacheDir());
HiLog.info(label,"引用目錄:"+this.getPreferencesDir());
HiLog.info(label,"同步目錄:"+this.getDistributedDir());
HiLog.info(label,"應(yīng)用目錄:"+this.getDir("",Context.MODE_PRIVATE));
File[]dataChildFiles=this.getDataDir().listFiles();
for(FiledataChildFile:dataChildFiles){
HiLog.info(label,"數(shù)據(jù)子目錄:"+dataChildFile);
}
File[]externalFiles=this.getExternalMediaDirs();
for(FileexternalFile:externalFiles){
HiLog.info(label,"外部Media目錄:"+externalFile);
}
try{
//該目錄和JSUI中的internal://cache/目錄是一個(gè)目錄
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);
//設(shè)置圖片參數(shù)
ImageSource.DecodingOptionsdecodingOptions=newImageSource.DecodingOptions();
decodingOptions.desiredSize=newSize(200,200);
imageSource.createPixelmap(decodingOptions);
//該種方式直接訪問(wèn)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,"文件保存出錯(cuò):"+e.getMessage());
e.printStackTrace();
}
Filefile=this.getCacheDir();
File[]files=file.listFiles();
for(Filefile1:files){
HiLog.info(label,"File目錄:"+file1);
}
審核編輯:符乾江
-
應(yīng)用開發(fā)
+關(guān)注
關(guān)注
0文章
59瀏覽量
9398 -
HarmonyOS
+關(guān)注
關(guān)注
79文章
1980瀏覽量
30333
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論