Benutzer mit den meisten Antworten
GetTempFileName in .NET

Frage
-
Antworten
-
Hallo Christian,
Möchtest Du einen eigenen Prefix oder einen anderen Pfad verwenden, kannst Du deinen eigenen Wrapper erstellen, z.B.:
public class NativeMethods { [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern uint GetTempFileName(string tempPath, string prefix, uint uniqueIdOrZero, StringBuilder tempFileName); [DllImport("kernel32.dll", CharSet = CharSet.Auto)] static extern int FormatMessage(int dwFlags, IntPtr lpSource, int dwMessageId, int dwLanguageId, StringBuilder lpBuffer, int nSize, IntPtr va_list_arguments); public static string GetTempFileName(string tempPath, string prefix) { StringBuilder fileNameBuilder = new StringBuilder(260); if (GetTempFileName(tempPath, prefix, 0, fileNameBuilder) == 0) { int errorCode = Marshal.GetLastWin32Error(); throw new IOException(GetMessage(errorCode)); } string tempFileName = fileNameBuilder.ToString(); return tempFileName; } private static string GetMessage(int errorCode) { StringBuilder buffer = new StringBuilder(512); IntPtr nullPointer = IntPtr.Zero; if (FormatMessage(0x3200, nullPointer, errorCode, 0, buffer, buffer.Capacity, nullPointer) != 0) return buffer.ToString(); return String.Format("Unbekannter Fehler: {0}", errorCode); } }
Gruß
Marcel- Als Antwort markiert Christian315 Mittwoch, 18. Januar 2012 15:08
-
Hallo Christian,
in .NET gibt es zunächst Path.GetTempFileName, die Methode erlaubt aber keine Präfixwahhl und verwendet "tmp",
auch wenn sie intern die von Dir gezeigte Windows API Funktion nutzt.
Alternativ wäre da noch GetRandomFilename, die einen zufälligen Namen erzeugt
und mit GetTempPath kombiniert werden kann.Gruß Elmar
- Bearbeitet Elmar BoyeEditor Mittwoch, 18. Januar 2012 10:14
- Als Antwort markiert Christian315 Mittwoch, 18. Januar 2012 10:19
Alle Antworten
-
Hallo Christian,
in .NET gibt es zunächst Path.GetTempFileName, die Methode erlaubt aber keine Präfixwahhl und verwendet "tmp",
auch wenn sie intern die von Dir gezeigte Windows API Funktion nutzt.
Alternativ wäre da noch GetRandomFilename, die einen zufälligen Namen erzeugt
und mit GetTempPath kombiniert werden kann.Gruß Elmar
- Bearbeitet Elmar BoyeEditor Mittwoch, 18. Januar 2012 10:14
- Als Antwort markiert Christian315 Mittwoch, 18. Januar 2012 10:19
-
Hallo Christian,
Möchtest Du einen eigenen Prefix oder einen anderen Pfad verwenden, kannst Du deinen eigenen Wrapper erstellen, z.B.:
public class NativeMethods { [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern uint GetTempFileName(string tempPath, string prefix, uint uniqueIdOrZero, StringBuilder tempFileName); [DllImport("kernel32.dll", CharSet = CharSet.Auto)] static extern int FormatMessage(int dwFlags, IntPtr lpSource, int dwMessageId, int dwLanguageId, StringBuilder lpBuffer, int nSize, IntPtr va_list_arguments); public static string GetTempFileName(string tempPath, string prefix) { StringBuilder fileNameBuilder = new StringBuilder(260); if (GetTempFileName(tempPath, prefix, 0, fileNameBuilder) == 0) { int errorCode = Marshal.GetLastWin32Error(); throw new IOException(GetMessage(errorCode)); } string tempFileName = fileNameBuilder.ToString(); return tempFileName; } private static string GetMessage(int errorCode) { StringBuilder buffer = new StringBuilder(512); IntPtr nullPointer = IntPtr.Zero; if (FormatMessage(0x3200, nullPointer, errorCode, 0, buffer, buffer.Capacity, nullPointer) != 0) return buffer.ToString(); return String.Format("Unbekannter Fehler: {0}", errorCode); } }
Gruß
Marcel- Als Antwort markiert Christian315 Mittwoch, 18. Januar 2012 15:08