質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

4550閲覧

JavaのFileOutputStreamの際にFileを作成しなくてもbyteのデータは保存できますか?

YuruFuwaFox

総合スコア12

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/07/01 13:59

編集2019/07/01 14:03

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
初の質問ということもあり、変な部分も多いかもしれませんがよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YuruFuwaFox

2019/07/01 14:25

FileOutputStreamでStringを引数として渡してあげればストリームを作ってくれるのでそこに書き込みをするから大丈夫、という感じであっていますか?
gentaro

2019/07/01 14:47

リファレンスを理解できなくても、簡単なサンプル作って動かしてみればすぐわかる気がするんですが。まず手を動かしてみましょう。
YuruFuwaFox

2019/07/01 14:58

わかりました。アドバイスありがとうございます。
guest

回答1

0

自己解決

アドバイスいただいたように、自身でテストとして別でプログラムを組んでやったところ、new File()でファイルを作成せずとも、ファイルのパスと作成したいファイルを記述するだけで大丈夫であると確認できました。
ありがとうございました。

投稿2019/07/01 15:26

YuruFuwaFox

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問