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

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

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

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

Q&A

解決済

2回答

2316閲覧

[Java]設定ファイルのパスはどうやって決定するべき?

luma

総合スコア183

Java

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

1グッド

0クリップ

投稿2016/08/25 13:15

編集2016/08/25 13:17

Javaで作ったアプリケーションで、設定ファイルをXMLか何かで出力しようと思っているのですが、
java.util.Propertiesのようにリソースとして保存するのでなく、
Windowsで言うところの、C:\Documents and Settings\[ユーザ名]\Application Data
などを指定して、外側(?)に保存したいと思っています。

.NET向けの解説を見て、Applicationが提供するUserAppDataPathやCommonAppDataPathといったプロパティが取得できたらいいなと思ったのですが、なかなか見つけられませんでした。

OSを判定して、Windowsでは…Macでは…とやるのがいいのでしょうか。

それとも何かいい方法やライブラリがあったりするのでしょうか。

A-pZ👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

システムプロパティーのuser.home、つまりSystem.getProperty("user.home")でホームディレクトリーの文字列が取得できます。

私(argius)の環境の場合、
WindowsならC:\Users\argiusが返されますし、
Macなら/Users/argiusが返されます。

これを利用するのが一番簡単ではないかと思います。

よくあるのは、ホームディレクトリーの下に、.app(appの部分はアプリの名前か略名)のようなディレクトリーを作って、保存する方法でしょう。
Javaプロダクトを使っていると、それらのドットディレクトリーがたくさんホームディレクトリーの下にできます。

投稿2016/08/25 13:26

編集2016/08/25 13:54
argius

総合スコア9390

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

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

luma

2016/08/25 13:36

なるほど… その場合、絶対ということはないでしょうが、 「User/.[アプリ名|略名]/設定ファイル」 「User/.[開発者名]/[アプリ名|略名]/設定ファイル]」 この2つだとどっちが良いとかはあるんでしょうか?
luma

2016/08/25 13:56

追記ありがとうございました!
argius

2016/08/25 13:57

開発者名というのが何を意味しているのかは気になりますが、 いずれにしても前者の.[アプリ名|略名]の方が一般的だと思います。 今後、Javaのツールなどを使っていると実際にお目にかかることがあるでしょう。
luma

2016/08/25 15:02

開発者名はおかしかったですね、企業名とか会社名とかです。
argius

2016/08/25 15:15 編集

> 企業名とか会社名 あるとしたら、アプリ名が良くある名前なので他社の同名の製品と競合しないように 企業名+アプリ名にする、というケースですね。 実際見たことあるのはほとんど(ごく一部にどちらなのか微妙なのがある)がアプリ名だけです。 それも見越してアプリ名を付ける必要がありますね。 (これもブランディングというのかな?)
guest

0

[自己解決というか追記]
サン・マイクロシステムズの位置に依存しない方法でのリソースへのアクセスというガイドを見つけました。
リソースと設定ファイルは違うような気がしますが、
argiusさんが答えてくれたようなSystem.getProperty("user.home")以外にも、System.getProperty("java.home")といった場所に置く方法が書かれていましたので一応。

投稿2016/08/26 12:33

編集2016/08/26 12:36
luma

総合スコア183

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

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

argius

2016/08/26 13:58

それはご質問の主旨に合っていて良いですね。 私も何か資料のリンクはるべきでしたね。すみません。 内容はほとんど違わないと思いますが、最新版のリンクも置いておきます。 位置に依存しない方法でのリソースへのアクセス - Java SE 8 ドキュメント https://docs.oracle.com/javase/jp/8/docs/technotes/guides/lang/resources.html
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問