10

当我尝试检查特定文件的存在时,我得到java.lang.illegalArgumentException: File contains a path separator

使用 getFileStreamPath(..) 的正确方法是什么?

File file = getActivity().getFileStreamPath("mnt/sdcard/photo/1342147146535.jpg");
   if(file.exists()){
     Toast.makeText(getActivity(), "File exists in /mnt", Toast.LENGTH_SHORT);
}

我还尝试了以下方法来替换上述代码的第一行。这些都不起作用。

File file = getActivity().getFileStreamPath("file:///mnt/sdcard/photo/aviary_1342147146535.jpg");
            File file = getActivity().getFileStreamPath("/mnt/sdcard/photo/1342147146535.jpg");
//          File file = getActivity().getFileStreamPath("mnt/sdcard/photo/1342147146535.jpg");
//          File file = getActivity().getFileStreamPath("file:///mnt/sdcard/photo/1342147146535.jpg");

            if(file.exists()){
            Toast.makeText(getActivity(), "File exists in /mnt", Toast.LENGTH_SHORT);}
            else {
                Toast.makeText(getActivity(), "File NOT exists in /mnt", Toast.LENGTH_SHORT);}
4

2 回答 2

3

当我尝试使用方法 getFileStreamPath 时遇到了同样的问题。我认为它将文件作为参数,而不是整个路径;这就是它抛出异常的原因。我用下面的方法解决了。

public static Boolean fileExist(Activity activity , String filePath) {
        String finalPath = activity.getFilesDir().toString() + File.separator + filePath;
        File file = new File(finalPath);
        return file.exists();
    }
于 2015-03-09T12:54:53.197 回答
0

为此编写下面的代码。

File file = getActivity().getFileStreamPath("/mnt/sdcard/photo/1342147146535.jpg");
if(file.exists()){
    Toast.makeText(getActivity(), "File exists in /mnt", Toast.LENGTH_SHORT);
}

并按照下面的链接了解更多详情。

文件路径

于 2012-07-13T09:08:45.407 回答