JavaのFileOutpurStreamに関して
現在Javaを使ってBASE64形式の画像データを保存するというものを作っています。
そこの部分でFileOutputStreamについての質問があり投稿させていただきました。
疑問について
java – Base64エンコードイメージをファイルに書き込む
こちらの記事を参考にしてFileOutputStreamでbyte[]データ書き込もうとしています。
その際に、こちらの記事では書き込むためのFileを準備せず、FileOutputStreamにパスを渡して、ファイルの書き込みを行なっているように思います。
こちらはFileOutputStreamにパスを渡すと、Fileがなければ作成してくれるということでしょうか?
上の記事を見て作成したコード
tryからの部分で、ファイルがないままパスを指定して書き込みをするようにしているのですが、この前にファイルを作成しなくても大丈夫でしょうか?
Java
1private final Pattern imgPattern = Pattern.compile("^data:image/(?<ext>jpg|jpeg|png|gif);base64,/(?<data>.*)$"); 2 3private final String staticPath = new File("/src/main/resources/static").getAbsolutePath(); 4 5private String uploadImg(Long id, String imageBase64) { 6 Matcher imgFormat = imgPattern.matcher(imageBase64); 7 if (!imgFormat.find()) { 8 //ここについては未実装です 9 } 10 String imgExt = imgFormat.group("ext"); 11 String imgBase64Data = imgFormat.group("data"); 12 13 String imgName = id + "." + imgExt; 14 String imgPath = staticPath + "/images/" + imgName; 15 16 try (FileOutputStream stream = new FileOutputStream(imgPath)) { 17 byte[] decode = Base64.getDecoder().decode(imgBase64Data); 18 stream.write(decode); 19 } catch (IllegalArgumentException e) { 20 e.printStackTrace(); 21 } catch (IOException e) { 22 e.printStackTrace(); 23 } 24 return "/images/" + imgName; 25 }
補足情報(FW/ツールのバージョンなど)
Java8 SE
初の質問ということもあり、変な部分も多いかもしれませんがよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー