@Chris। আমিও দূরবর্তী ঝুঁকিতে পড়েছিলাম যে অস্থায়ী ডিরেক্টরি ইতিমধ্যে উপস্থিত থাকতে পারে। এলোমেলো এবং ক্রিপ্টোগ্রাফিকভাবে শক্তিশালী সম্পর্কে আলোচনাগুলি আমাকে পুরোপুরি সন্তুষ্ট করে না।
আমার পদ্ধতির মৌলিক সত্যটির উপর ভিত্তি করে যে ও / এস উভয়কেই দুটি ফাইল সফল করার জন্য একটি ফাইল তৈরি করার অনুমতি দেয় না। এটি একটি বিস্ময়কর বিষয় যে। নেট ডিজাইনাররা ডিরেক্টরিগুলির জন্য উইন 32 এপিআই কার্যকারিতা আড়াল করতে বেছে নিয়েছিল যা এটি আরও সহজ করে তোলে, কারণ আপনি যখন দ্বিতীয়বার ডিরেক্টরি তৈরি করার চেষ্টা করবেন তখন এটি একটি ত্রুটি ঘটায়। আমি যা ব্যবহার করি তা এখানে:
[DllImport(@"kernel32.dll", EntryPoint = "CreateDirectory", SetLastError = true, CharSet = CharSet.Unicode)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool CreateDirectoryApi
([MarshalAs(UnmanagedType.LPTStr)] string lpPathName, IntPtr lpSecurityAttributes);
/// <summary>
/// Creates the directory if it does not exist.
/// </summary>
/// <param name="directoryPath">The directory path.</param>
/// <returns>Returns false if directory already exists. Exceptions for any other errors</returns>
/// <exception cref="System.ComponentModel.Win32Exception"></exception>
internal static bool CreateDirectoryIfItDoesNotExist([NotNull] string directoryPath)
{
if (directoryPath == null) throw new ArgumentNullException("directoryPath");
// First ensure parent exists, since the WIN Api does not
CreateParentFolder(directoryPath);
if (!CreateDirectoryApi(directoryPath, lpSecurityAttributes: IntPtr.Zero))
{
Win32Exception lastException = new Win32Exception();
const int ERROR_ALREADY_EXISTS = 183;
if (lastException.NativeErrorCode == ERROR_ALREADY_EXISTS) return false;
throw new System.IO.IOException(
"An exception occurred while creating directory'" + directoryPath + "'".NewLine() + lastException);
}
return true;
}
আপনারা সিদ্ধান্ত নিতে পারেন যে পরিচালনা / পির চালিত কোডের "ব্যয় / ঝুঁকি" মূল্যবান কিনা। বেশিরভাগই বলবেন এটি তা নয় তবে কমপক্ষে আপনার এখন একটি পছন্দ রয়েছে।
ক্রিয়েটপ্যারেন্টফোল্ডার () ছাত্রের অনুশীলন হিসাবে ছেড়ে যায়। আমি ডিরেক্টরি ব্যবহার করি। ক্রিয়েট ডিরেক্টরী ()। ডিরেক্টরিটির পিতামাতাকে পেতে সাবধান হন, যেহেতু এটি যখন মূল হয় তখন শূন্য থাকে।