Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android java.io.FileNotFoundException:没有这样的文件或目录_Android_File_Filenotfoundexception - Fatal编程技术网

Android java.io.FileNotFoundException:没有这样的文件或目录

Android java.io.FileNotFoundException:没有这样的文件或目录,android,file,filenotfoundexception,Android,File,Filenotfoundexception,我已经读取了片段中光标处的所有图像文件,并传输了第一个有任何问题的活动,但当跳过另一个活动时,虽然文件已经存在,但没有读取相同的文件路径 片段设置所有媒体数据并传输第一个活动。第一个活动正在查看所有媒体文件的现有状态,并且所有文件都返回true,但如果第一个活动传输这些文件,则第二个活动不会读取相同的文件,并且在调用文件操作(BitmapFactory.decodeFile)时抛出FileNotFoundException isFile()函数仅提供检查是否存在文件的功能 媒体型号: publi

我已经读取了片段中光标处的所有图像文件,并传输了第一个有任何问题的活动,但当跳过另一个活动时,虽然文件已经存在,但没有读取相同的文件路径

片段设置所有媒体数据并传输第一个活动。第一个活动正在查看所有媒体文件的现有状态,并且所有文件都返回true,但如果第一个活动传输这些文件,则第二个活动不会读取相同的文件,并且在调用文件操作(BitmapFactory.decodeFile)时抛出FileNotFoundException

isFile()
函数仅提供检查是否存在文件的功能

媒体型号:

public Media(Uri uri, String path){
  this.uri = uri;
  this.path = path;
}
private final LinkedList<Media> mediasList;

void setMediasListAndStartFirstActivity(){

  while (cursor != null && cursor.moveToNext()) {

    Uri uri = Uri.withAppendedPath(contentUri, cursor.getString(cursor.getColumnIndexOrThrow(Images.Media._ID)));
    String path = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.DATA));  
    mediasList.add(new Media(uri, path));
  }

Intent i = new Intent(requireActivity(), FirstActivity.class);
i.putExtra("mediasList", mediasList);
startActivity(i);      
}
Bundle extras = getIntent().getExtras();
mediasList = (ArrayList<Media>) getIntent().getExtras().get("mediasList");

for(Media media : mediasList)
 boolean hasMedia = new File(media.getPath()).isFile(); // --> all medias return true

void transferAllMediasToSecondActivity(){
 Intent i = new Intent(FirstActivity.this, SecondActivity.class);
 i.putExtra("mediasList", mediasList);
 startActivity(i);
}
MyFragment.java:

public Media(Uri uri, String path){
  this.uri = uri;
  this.path = path;
}
private final LinkedList<Media> mediasList;

void setMediasListAndStartFirstActivity(){

  while (cursor != null && cursor.moveToNext()) {

    Uri uri = Uri.withAppendedPath(contentUri, cursor.getString(cursor.getColumnIndexOrThrow(Images.Media._ID)));
    String path = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.DATA));  
    mediasList.add(new Media(uri, path));
  }

Intent i = new Intent(requireActivity(), FirstActivity.class);
i.putExtra("mediasList", mediasList);
startActivity(i);      
}
Bundle extras = getIntent().getExtras();
mediasList = (ArrayList<Media>) getIntent().getExtras().get("mediasList");

for(Media media : mediasList)
 boolean hasMedia = new File(media.getPath()).isFile(); // --> all medias return true

void transferAllMediasToSecondActivity(){
 Intent i = new Intent(FirstActivity.this, SecondActivity.class);
 i.putExtra("mediasList", mediasList);
 startActivity(i);
}
private final LinkedList mediasList;
void setMediaSliststandStartFirstActivity()无效{
while(cursor!=null&&cursor.moveToNext(){
Uri=Uri.withAppendedPath(contentUri,cursor.getString(cursor.getColumnIndexOrThrow(Images.Media._ID));
字符串路径=cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.DATA));
添加(新媒体(uri,路径));
}
意图i=新意图(requireActivity(),FirstActivity.class);
i、 putExtra(“mediasList”,mediasList);
星触觉(i);
}
FirstActivity.java:

public Media(Uri uri, String path){
  this.uri = uri;
  this.path = path;
}
private final LinkedList<Media> mediasList;

void setMediasListAndStartFirstActivity(){

  while (cursor != null && cursor.moveToNext()) {

    Uri uri = Uri.withAppendedPath(contentUri, cursor.getString(cursor.getColumnIndexOrThrow(Images.Media._ID)));
    String path = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.DATA));  
    mediasList.add(new Media(uri, path));
  }

Intent i = new Intent(requireActivity(), FirstActivity.class);
i.putExtra("mediasList", mediasList);
startActivity(i);      
}
Bundle extras = getIntent().getExtras();
mediasList = (ArrayList<Media>) getIntent().getExtras().get("mediasList");

for(Media media : mediasList)
 boolean hasMedia = new File(media.getPath()).isFile(); // --> all medias return true

void transferAllMediasToSecondActivity(){
 Intent i = new Intent(FirstActivity.this, SecondActivity.class);
 i.putExtra("mediasList", mediasList);
 startActivity(i);
}
Bundle extras=getIntent().getExtras();
mediasList=(ArrayList)getIntent().getExtras().get(“mediasList”);
用于(媒体:媒体列表)
布尔hasMedia=新文件(media.getPath()).isFile();//-->所有媒体都返回true
无效transferAllMediasToSecondActivity(){
意图i=新意图(FirstActivity.this,SecondActivity.class);
i、 putExtra(“mediasList”,mediasList);
星触觉(i);
}
SecondActivity.java

Bundle extras = getIntent().getExtras();
mediasList = (ArrayList<Media>) getIntent().getExtras().get("mediasList");

for(int i = mediasList.size; i <= 0; i--)
 {
    Media media = mediasList.get(i);
    File mediaFile = new File(media.getPath());
    boolean hasMedia = mediaFile.isFile(); // --> all medias return false. All medias are not reading

    // -> throw FileNotFound exception call this function 
    BitmapFactory.decodeFile(mediaFile.getAbsolutePath(), new BitmapFactory.Options()); 
}
Bundle extras=getIntent().getExtras();
mediasList=(ArrayList)getIntent().getExtras().get(“mediasList”);
for(int i=mediasList.size;i)所有媒体返回false。所有媒体均未读取
//->抛出FileNotFound异常调用此函数
解码文件(mediaFile.getAbsolutePath(),新的BitmapFactory.Options());
}
我的第一个媒体路径:

  • /存储/模拟/0/DCIM/Screenshots/Screenshot_20190712-123350.jpg

  • 在MyFragment
    新建文件(media.getPath()).isFile()
    :true

  • 在FirstActivity
    新建文件(media.getPath()).isFile()
    :true

  • 在SecondActivity
    新建文件(media.getPath()).isFile()
    :false和decodeFile函数抛出FileNotFoundException

例外情况:

public Media(Uri uri, String path){
  this.uri = uri;
  this.path = path;
}
private final LinkedList<Media> mediasList;

void setMediasListAndStartFirstActivity(){

  while (cursor != null && cursor.moveToNext()) {

    Uri uri = Uri.withAppendedPath(contentUri, cursor.getString(cursor.getColumnIndexOrThrow(Images.Media._ID)));
    String path = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.DATA));  
    mediasList.add(new Media(uri, path));
  }

Intent i = new Intent(requireActivity(), FirstActivity.class);
i.putExtra("mediasList", mediasList);
startActivity(i);      
}
Bundle extras = getIntent().getExtras();
mediasList = (ArrayList<Media>) getIntent().getExtras().get("mediasList");

for(Media media : mediasList)
 boolean hasMedia = new File(media.getPath()).isFile(); // --> all medias return true

void transferAllMediasToSecondActivity(){
 Intent i = new Intent(FirstActivity.this, SecondActivity.class);
 i.putExtra("mediasList", mediasList);
 startActivity(i);
}
无法解码流:java.io.FileNotFoundException: /存储/仿真/0/MyApp/MyAppImage/IMAGE20190711_182337871.jpg(编号 此类文件或目录)

FirstFragment媒体列表日志:

public Media(Uri uri, String path){
  this.uri = uri;
  this.path = path;
}
private final LinkedList<Media> mediasList;

void setMediasListAndStartFirstActivity(){

  while (cursor != null && cursor.moveToNext()) {

    Uri uri = Uri.withAppendedPath(contentUri, cursor.getString(cursor.getColumnIndexOrThrow(Images.Media._ID)));
    String path = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.DATA));  
    mediasList.add(new Media(uri, path));
  }

Intent i = new Intent(requireActivity(), FirstActivity.class);
i.putExtra("mediasList", mediasList);
startActivity(i);      
}
Bundle extras = getIntent().getExtras();
mediasList = (ArrayList<Media>) getIntent().getExtras().get("mediasList");

for(Media media : mediasList)
 boolean hasMedia = new File(media.getPath()).isFile(); // --> all medias return true

void transferAllMediasToSecondActivity(){
 Intent i = new Intent(FirstActivity.this, SecondActivity.class);
 i.putExtra("mediasList", mediasList);
 startActivity(i);
}
媒体[0]: com.android.android.conversation.attachment.gallery.model。Media@2ee333c9 媒体[1]: com.android.android.conversation.attachment.gallery.model。Media@2ee333b1 媒体[2]: com.android.android.conversation.attachment.gallery.model。Media@2ee333b0

媒体[0]。getPath():/storage/emulated/0/MyApp/MyAppImage/IMAGE20190711_182337871.jpg 媒体[1]。getPath():/storage/emulated/0/MyApp/MyAppImage/IMAGE20190711_182334910.jpg 媒体[2]。getPath():/storage/emulated/0/MyApp/MyAppImage/IMAGE20190716_170439762.jpg

FirstActivity和SecondActivity媒体列表日志:

public Media(Uri uri, String path){
  this.uri = uri;
  this.path = path;
}
private final LinkedList<Media> mediasList;

void setMediasListAndStartFirstActivity(){

  while (cursor != null && cursor.moveToNext()) {

    Uri uri = Uri.withAppendedPath(contentUri, cursor.getString(cursor.getColumnIndexOrThrow(Images.Media._ID)));
    String path = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.DATA));  
    mediasList.add(new Media(uri, path));
  }

Intent i = new Intent(requireActivity(), FirstActivity.class);
i.putExtra("mediasList", mediasList);
startActivity(i);      
}
Bundle extras = getIntent().getExtras();
mediasList = (ArrayList<Media>) getIntent().getExtras().get("mediasList");

for(Media media : mediasList)
 boolean hasMedia = new File(media.getPath()).isFile(); // --> all medias return true

void transferAllMediasToSecondActivity(){
 Intent i = new Intent(FirstActivity.this, SecondActivity.class);
 i.putExtra("mediasList", mediasList);
 startActivity(i);
}
媒体[0]: com.android.android.conversation.attachment.gallery.model。Media@2ee333c9 媒体[1]: com.android.android.conversation.attachment.gallery.model。Media@2ee333b1

媒体[0]。getPath():/storage/emulated/0/MyApp/MyAppImage/IMAGE20190711_182337871.jpg 媒体[1]。getPath():/storage/emulated/0/MyApp/MyAppImage/IMAGE20190711_182334910.jpg


尝试更改从以下位置获取片段路径的方式:

while (cursor != null && cursor.moveToNext()) {

    Uri uri = Uri.withAppendedPath(contentUri, cursor.getString(cursor.getColumnIndexOrThrow(Images.Media._ID)));
    String path = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.DATA));  
    mediasList.add(new Media(uri, path));
}


尝试更改从以下位置获取片段路径的方式:

while (cursor != null && cursor.moveToNext()) {

    Uri uri = Uri.withAppendedPath(contentUri, cursor.getString(cursor.getColumnIndexOrThrow(Images.Media._ID)));
    String path = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.DATA));  
    mediasList.add(new Media(uri, path));
}


我注意到我的可包裹介质并不是到处都是

我找到了这个解决方案:


我用了这个,效果很好。非常感谢你的努力@John Joe和@Frandall

我注意到我的可包裹介质并不是到处都是

我找到了这个解决方案:


我使用了这个,效果很好。非常感谢您的努力@John Joe和@Frandall

尝试在secondActivity中打印
MediaList
。我打印它请帮助我在secondActivity中打印
MediaList
。我打印它请帮助我所有媒体都不会通过此方法显示第一个片段、活动和第二个活动:D@propoLis你能用片段和第一个活动中的媒体列表日志更新你的问题吗?我写了它们:)所有媒体都不会通过这种方法显示第一个片段、活动和第二个活动:D@propoLis你能用片段和第一个活动的mediasList日志更新你的问题吗?我写了:)