Answered by:
Why on FileStream File.Create i'm getting an exception and it's not creating the directory and the file ?

Question
-
This is the code :
FileStream fs=File.Create(settings); fs.Close();
settings contain :
"C:\\Users\\bout0_000\\AppData\\Local\\ScreenVideoRecorder\\ScreenVideoRecorder
\\settings\\settings.txt"
But instead of creating it i'm getting an exception on the FileStream line :
The type initializer for 'ScreenVideoRecorder.Options_DB' threw an exception
The full exception :
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:
I understand that the exception say that the directory+file is not exist. The idea is that the FileStream will create it but it's not. And i want to use this FileStream so what's wrong ?- Edited by Chocolade1972 Thursday, June 6, 2013 1:46 PM
Answers
-
The message inside the stacktrace says it:
Could not find a part of the path 'C:\Users\bout0_000\AppData\Local\ScreenVideoRecorder\ScreenVideoRecorder\settings\settings.txt'.
You need to create the directory path first
- Proposed as answer by Christopher84 Thursday, June 6, 2013 2:02 PM
- Marked as answer by Chocolade1972 Thursday, June 6, 2013 2:08 PM
All replies
-
The message inside the stacktrace says it:
Could not find a part of the path 'C:\Users\bout0_000\AppData\Local\ScreenVideoRecorder\ScreenVideoRecorder\settings\settings.txt'.
You need to create the directory path first
- Proposed as answer by Christopher84 Thursday, June 6, 2013 2:02 PM
- Marked as answer by Chocolade1972 Thursday, June 6, 2013 2:08 PM
-
The message inside the stacktrace says it:
Could not find a part of the path 'C:\Users\bout0_000\AppData\Local\ScreenVideoRecorder\ScreenVideoRecorder\settings\settings.txt'.
You need to create the directory path first
I understand that so what is the line :
FileStream fs=File.Create(settings);
Do ?
It's creating only the file without the directory ?
-
Hi,
Wrong assumption. The purpose of filestream is just to create/read files (it could be counter productive as if for some reason your path is wrong it could just end up with using this wrong location being used without noticing anything).
You can still "opt-in" for this by using explicitely http://msdn.microsoft.com/en-us/library/54a0at6s.aspx to create a Directory and all its subdirectories (but you'll have to exclude the file name from this path).
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".