これはコードです:
public OptionsFile(string settings)
{
if (File.Exists(settings))
{
}
else
{
FileStream fs=File.Create(settings);
fs.Close();
}
path_exe = Path.GetDirectoryName(Application.LocalUserAppDataPath);
Options_File = settings;
}
行: FileStream fs=File.Create(settings);
何らかの理由でファイルを作成できません。Form1 では、コンストラクターで行いました:
Options_DB.Get_Video_File();
現在、ブレークポイントを使用して Options_DB クラスで実行しています:
namespace test
{
static class Options_DB
{
static string settings_dir;
static string settings_file;
static OptionsFile setting_file;
static string path_settings;
static string path_exe;
static string outPutVideoFileDirectory;
static Options_DB()
{
// --- O P E N N I N G S E T T I N G F I L E ;
path_exe = Path.GetDirectoryName(Application.LocalUserAppDataPath);
path_settings = Path.GetDirectoryName(Application.LocalUserAppDataPath);
settings_file = "\\settings.txt";
settings_dir = path_settings + @"\settings";
setting_file = new OptionsFile(settings_dir + settings_file);
次に、OptionsFile で次のことを行っています。
public OptionsFile(string settings)
{
if (File.Exists(settings))
{
}
else
{
FileStream fs=File.Create(settings);
fs.Close();
}
path_exe = Path.GetDirectoryName(Application.LocalUserAppDataPath);
Options_File = settings;
}
OptionsFile でブレークポイントを使用し、設定に settings.txt ファイルを含むユーザー ディレクトリが含まれていることを確認しましたが、何らかの理由で行を作成できません。
FileStream fs=File.Create(settings);
次の行の Form1 で停止します。 Options_DB.Get_Video_File();
「ScreenVideoRecorder.Options_DB」の型初期化子が例外をスローしました
System.TypeInitializationException was unhandled
HResult=-2146233036
Message=The type initializer for 'ScreenVideoRecorder.Options_DB' threw an exception.
Source=ScreenVideoRecorder
TypeName=ScreenVideoRecorder.Options_DB
StackTrace:
at ScreenVideoRecorder.Options_DB.Get_Video_File()
at ScreenVideoRecorder.Form1..ctor() in d:\C-Sharp\ScreenVideoRecorder\ScreenVideoRecorderWorkingVersion\Form1.cs:line 54
at ScreenVideoRecorder.Program.Main() in d:\C-Sharp\ScreenVideoRecorder\ScreenVideoRecorderWorkingVersion\Program.cs:line 18
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException: System.IO.DirectoryNotFoundException
HResult=-2147024893
Message=Could not find a part of the path 'C:\Users\bout0_000\AppData\Local\ScreenVideoRecorder\ScreenVideoRecorder\settings\settings.txt'.
Source=mscorlib
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
at System.IO.File.Create(String path)
at DannyGeneral.OptionsFile..ctor(String settings) in d:\C-Sharp\ScreenVideoRecorder\ScreenVideoRecorderWorkingVersion\OptionsFile.cs:line 73
at ScreenVideoRecorder.Options_DB..cctor() in d:\C-Sharp\ScreenVideoRecorder\ScreenVideoRecorderWorkingVersion\Options_DB.cs:line 29
InnerException:
何らかの理由で、ブレークポイントの手順に従った後、 FileStream を作成できません。次の行に何か問題があると思います: FileStream fs=File.Create(settings);
作成しようとすると、設定が続行されます。
"C:\\Users\\user name\\AppData\\Local\\project dir\\project dir\\settings\\settings.txt"
しかし、決して作成しません。