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 に答える