ユーザーがファンタジー フットボール チームを追跡できるようにプログラムを作成しました。以下のコードは、ユーザーが特定のルール セットの下でチームを選択できるようにするフォームの 1 つからのものです。ここでの問題は、書き込まれたファイルから読み取っているファイルに書き込むことではありません。
このファイルは私のリソースにあり、ユーザーが入力したプレーヤーが含まれています。問題は、ユーザーがこのテキスト ファイルにアクセスする必要があることです。この時点では、ユーザーがファイルにアクセスして編集できるかどうかは関係ありません。これは 1 人の個人的なプロジェクトです。ただし、このプログラムをセットアップした方法では、使用するパスがテキスト ファイルのプロパティからのフル パスであるため、このプログラムは自分のコンピューターでのみ実行されます。
以下に示すように properties.Resources.resource を使用してみましたが、最近では Application.StartupPath + "/FantasyFootball.txt" を使用してみました。これにリフレクションが必要かどうかわからないため、まだリフレクションを試していません。このプログラムを公開すると、どのコンピューターでも動作するはずですが、Visual Studio の外で実行しようとすると、AppData フォルダーが見つからないという例外が発生します。
では、ビジュアル スタジオで公開ボタンを押すと実際に何が起こるのでしょうか。セットアップ ファイル、アプリケーション ファイル フォルダー、および actual.application ファイルを取得すると、これは最終的に app.Publish フォルダー内のリリース フォルダー内の bin フォルダーに格納されます。これが何を意味するのか、またはそれをどうするかを知る経験はまだありませんか?
private void btnShowRoster_Click(object sender, EventArgs e)
{
string masterRosterPath = Properties.Resources.FantasyFootball;/*
this is where the problem is I am not sure what to make the path
so that the user will be able to acess the file*/
FileStream fs = new FileStream(masterRosterPath, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
string playerIn;
string[] fields;
playerIn = sr.ReadLine();
const char DELIM = ',';
string player = " ";
while (playerIn != null)
{
fields = playerIn.Split(DELIM);
player = Convert.ToString(fields[0]);
lbRoster.Items.Add(player);
playerIn = sr.ReadLine();
}
sr.Close();
fs.Close();
btnShowRoster.Enabled = false;
MessageBox.Show("Click on a player to add them to your team", "Choose Team", MessageBoxButtons.OK,MessageBoxIcon.Information);
}