3

私は単純なプログラムに取り組んでおり、その一部はtxtファイルからリストに入力されます。

これはおそらく賢明な質問ではありませんが、これに関する情報は見つかりませんでした。アプリケーションディレクトリにテキストファイルを配置するのに最適な場所はどこかと思いました。

知っていResoucesますが、そこに保存したファイルのパスを取得できませんでした。

だから2つの質問:

  1. txtファイルを置くのに最適な場所はどこですか?(またはアプリケーションで使用するその他の重要なファイル)

  2. ファイルを入れた場合、Resourcesそのパスを取得するにはどうすればよいですか?

(私の英語でごめんなさい)

4

2 に答える 2

2

これらがユーザーに公開する必要がなく、内部目的にのみ役立つファイルである場合は、それらをリソースとしてアセンブリに埋め込み、必要なときに抽出することができます。

これを行うには、アプリケーションに新しいディレクトリを作成します。それを「リソース」と呼びましょう。次に、それにテキストファイルを追加します。各テキストファイルのプロパティウィンドウを使用して、BuildAction設定を「埋め込みリソース」に変更します。次に、コードでファイルの内容が必要になったら、次のようなコードを使用してファイルを抽出できます。

using System.Reflection;

// ...

using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MyApplication.Resources.MyFile.txt")) {
    using (StreamReader reader = new StreamReader(stream)) {
        string contents = reader.ReadToEnd();
        // Do stuff with the text here
    }
}

これを行いたくない場合、ファイルを配置する正しい場所は、AppDataディレクトリの下に作成したディレクトリです。これは既知のシステムパスであり、次のように取得できます。

string folderLocation = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string myPath = Path.Combine(folderLocation, "MyAppName");

次に、StreamReaderまたは他のクラスを使用しSystem.IOて、ファイルを検索/列挙し、読み取ることができます。

于 2012-08-16T23:30:07.960 に答える
1

アプリケーションに関連付けられた/コンパニオンデータファイルがある場合、それらをリソースとして埋め込むことが理にかなっている場合があります。これは、それらが改ざんされたり、削除されたり、データが変更されたりする可能性が低くなるためです。

また、ファイルを緩めたままにしておくのが理にかなっている場合もあります。そのため、ファイルを保存するのに最適な場所を決定する必要があります。これらは、アプリケーションがインストールされている場所、またはアプリケーションデータ/AppDataにあります。ディレクトリ。


リソースにファイルを埋め込むには、次のリンクを参照してください。

StreamReaderファイル(たとえば、テキストファイルをリソースに埋め込む)を埋め込み、を使用してファイルにアクセスし、その内容を読み取る方法を示すステップバイステップガイドがあります。


ファイルを保存し、適切に配置されたディレクトリからファイルにアクセスするには、次を使用できます。

System.Environment.SpecialFolder.ApplicationData

Environment.GetFolderPath()

AppDataディレクトリがどこにあるかを確認します。

次に、アプリケーションのセットアップ/インストーラーを作成するときに、AppDataの下にアプリケーションのディレクトリを作成するように取得する必要があります。次に、その場所にインストールするファイルを決定できます。

見る:

ApplicationDataが「ローミング」することに注意してください...つまり、別のマシンにログオンすると、ファイルはプロファイルの一部としてそのマシンに転送されます....これは望ましくない場合があります....代わりに次を使用できます:

System.Environment.SpecialFolder.CommonApplicationData
于 2012-08-16T23:26:47.760 に答える