特定のディレクトリのパブリック ギャラリー フォルダーに画像ファイルを書き込もうとしていますが、ディレクトリであるためファイルを開くことができないというエラーが表示され続けます。
私がこれまでに持っているものは次のとおりです
//set the file path
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + File.separator + directory;
File outputFile = new File(path,"testing.png");
outputFile.mkdirs();
FileOutputStream out = new FileOutputStream(outputFile);
bmp.compress(Bitmap.CompressFormat.PNG, 100, out);
directory はアプリケーション名です。したがって、アプリケーションによって保存されたすべての写真はそのフォルダー/ディレクトリに移動しますが、エラーが発生し続けます
/storage/sdcard0/Pictures/appname/testing.png: open failed: EISDIR (Is a directory)
ディレクトリに入れようとせずに、変数パスをファイルとしてキャストしようとしても
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
エラーは表示されませんが、写真はまだギャラリーに表示されません。
***回答 ディレクトリ内にファイルを作成する前にディレクトリを作成できなかったため、最初にこのコードを実行したときに、testing.png という名前のディレクトリが作成されたことが問題でした。したがって、解決策は、最初にディレクトリを作成してから、次のように別のファイルで書き込むことです
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString() + File.separator + directory;
//directory is a static string variable defined in the class
//make a file with the directory
File outputDir = new File(path);
//create dir if not there
if (!outputDir.exists()) {
outputDir.mkdir();
}
//make another file with the full path AND the image this time, resized is a static string
File outputFile = new File(path+File.separator+resized);
FileOutputStream out = new FileOutputStream(outputFile);
bmp.compress(Bitmap.CompressFormat.PNG, 100, out);
私が最初にしたのと同じ間違いをした場合は、ストレージに移動してディレクトリを手動で削除する必要があるかもしれないことに注意してください