3

Clojure で書かれたアプリケーションがあります。このアプリケーションは、他のアプリケーションの作成を支援しています (たとえば、 のプラグインとしてleiningen)。そのためには、いくつかのファイルを書き込む場所が必要です。これらのファイルは多かれ少なかれ内部で使用され、実際にはユーザーの前に投げる必要はありません (ただし、それらをユーザーから隠す必要はありません)。

私はclojure.java.io/resourceそのようなものに使用していますが、アプリケーションにバンドルされているリソースへのアクセスのみを許可し、新しいリソースの作成や既存のリソースの変更は許可していないようです。

私はちょうどそのようなものを使用することを考えていますが、トラブルを避けるために、 API とすべてで、または、またはそれに関する何らかの規則がある~/.myapp/と思われます。しかし、私はこれが初心者なので、どこを掘ればいいのかわかりません。ClojureJavaLeiningen

私が言ったように、それはプラグインですが、プロジェクトがなくても実行できるようにしたいので、フォルダーなどをleiningen実際に使用することはできません。%project/out/

4

2 に答える 2

2

残念ながら、java / clojureの世界でも、ネイティブの世界でも、プログラムの中間ファイルを配置する場所について、最終的に受け入れられている単一の規則はありません。ただし、いくつかの基本的な原則が存在すると思います。

私の知る限り、ほとんどのプログラムは、必要なすべてのファイルを配布ファイル(変更してはならないもの:アイコンやサウンドなどのリソース、またはjarファイルなどのバイナリ)、構成ファイル(ユーザーが直接、またはプログラム自体を介して)および一時ファイル(私はそれらが何であるかは明らかだと思います)。

配布ファイルは通常、パッケージマネージャー(主にLinuxシステム)を介してインストールされるか、必要に応じて、などの事前定義されたディレクトリに手動でインストールされ/optます。Windowsシステムでは、これらは通常、インストールプログラムによってインストールされます。これらのファイルは直接変更されることはありませんが、通常、アップグレード時にパッケージマネージャーによって更新できます。

構成ファイルは通常、ユーザーのホームディレクトリに保存されます(プログラムがユーザーアプリケーションの場合)。悲しいことですが、これらのファイルを正確にどこに置くかについての慣習はまったくありません。UNIXシステムでは苦痛(~雑然)ですが、Windows IMOでは、Windowsでファイルシステムに制限付き権限を設定することは広く受け入れられていないため、ファイルはファイルシステムのほぼどこにでも配置される可能性があるため、さらに悪化します。

ただし、現在、(少なくともLinuxの世界では)$XDG_CONFIG_HOME環境変数のサブディレクトリに構成ファイルを保存する傾向があるようです。この変数は通常、~/.configパスに解決されます。このディレクトリを設定に使用するのは正しいと確信しています。これらの変数のファミリー($XDG_{CONFIG,CACHE,DATA}_HOME)があり、それぞれが特定の種類のファイルに使用されます。これはfreedesktopの標準だと思います。Windowsにこのようなものがあるかどうかはわかりませんが、可能性は高いです。私はこれに関するいくつかの情報を見つけようとし、そのような必要があればそれを使用したでしょう。

IntelliJ IDEA IDEなど、多くのプログラムでは、構成ディレクトリの正確な場所を明示的に設定できます。これもオプションになります。

一時ファイルは通常、システムが一時ファイル用に提供するディレクトリに保存されます。UNIXシステムでは、通常はですが/tmp、Windowsでは、たとえばC:\Users\%USER%\AppData\Local\Temp、Javaでは、システムプロパティを使用して一時ディレクトリの場所を取得できます。Clojureでは次のようになります

(System/getProperty "java.io.tmpdir")

正しく思い出せば、clojure標準ライブラリのどこかにこの値を取得できる関数さえあります。

このディレクトリはクリアできるため、実際には一時ファイルのみをそこに保存する必要があります(最近のLinuxディストリビューションでは、RAMにも保存されています)。

TL; DR

永続的なユーザー全体の構成(作業、キャッシュなど)ファイルを保存する場合は、~/.configUNIXシステムではディレクトリを使用し、Windowsではいくつかの正常なディレクトリを使用します(これにはさらにグーグルが必要です)。プログラムで何らかの作業を行った後に不要な一時ファイルを保存する場合は、"java.io.tmpdir"システムプロパティから取得できる標準のシステム一時ディレクトリを使用します。

于 2013-02-07T07:53:44.790 に答える
2

あなたの下に使用できるサブディレクトリがあると思います。~/.leinおそらく~/.lein/plugin-name/your_stuff_here.

于 2013-02-06T09:55:24.003 に答える