文件包含路径分隔符。

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);}

为什么不使用 File file = new File("path"); 而要使用文件流呢?尽管在先前的评论中提到了 getFileStreamPath 不是那样工作的。 - 10s
1
请查看此答案:https://dev59.com/Zm025IYBdhLWcg3wf2SE - Nermeen
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();
    }

0
请编写以下代码。
File file = getActivity().getFileStreamPath("/mnt/sdcard/photo/1342147146535.jpg");
if(file.exists()){
    Toast.makeText(getActivity(), "File exists in /mnt", Toast.LENGTH_SHORT);
}

请点击以下链接获取更多详细信息。

文件路径


4
getFileStreamPath()不支持包含文件分隔符的文件名。您会得到一个非法参数异常。 - BeccaP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接