Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как создать временный файл (для записи) в C#?
Возможный Дубликат:
Создание временных папок
Возможный Дубликат:
Создание временных папок
Я ищу что-то вроде модуля tempfile в Python: (предпочтительно) безопасный способ открыть файл для записи. Это должно быть легко удалить, когда я тоже закончу...
Похоже, .NET не имеет функций "batteries included" модуля tempfile , который не только создает файл, но и возвращает файловый дескриптор (старая школа, Я знаю...) к нему вместе с тропой. В то же время, он гарантирует, что только создающий пользователь может получить доступ к файлу и тому подобному ( mkstemp() я думаю): https://docs.python.org/library/tempfile.html
Ах, да, я вижу это. Но у GetTempFileName есть недостаток: есть условие гонки между тем, когда файл был создан (при вызове GetTempFileName создается 0-байтовый файл) и когда я получаю его открыть (после возвращения GetTempFileName). Это может быть проблемой безопасности, хотя и не для моего текущего приложения...
У меня также было такое же требование раньше, и я создал небольшой класс, чтобы решить его:
public sealed class TemporaryFile : IDisposable {
public TemporaryFile() :
this(Path.GetTempPath()) { }
public TemporaryFile(string directory) {
Create(Path.Combine(directory, Path.GetRandomFileName()));
}
~TemporaryFile() {
Delete();
}
public void Dispose() {
Delete();
GC.SuppressFinalize(this);
}
public string FilePath { get; private set; }
private void Create(string path) {
FilePath = path;
using (File.Create(FilePath)) { };
}
private void Delete() {
if (FilePath == null) return;
File.Delete(FilePath);
FilePath = null;
}
}
Он создает временный файл в указанной вами папке или в системной временной папке. Это одноразовый класс, поэтому в конце своего срока службы (либо Dispose , либо деструктор) он удаляет файл. Вы получаете имя созданного файла (и путь) через свойство FilePath . Вы, конечно, можете расширить его, чтобы также открыть файл для записи и вернуть связанный с ним FileStream .
Пример использования:
using (var tempFile = new TemporaryFile()) {
// use the file through tempFile.FilePath...
}
Path.GetTempFileName и Path.GetTempPath. Затем вы можете использовать эту ссылку для чтения / записи зашифрованных данных в файл.
Обратите внимание, что .NET-это не лучшая платформа для критически важных приложений безопасности. Вы должны быть хорошо осведомлены о том, как работает CLR, чтобы избежать некоторых ловушек, которые могут подвергнуть ваши критические данные хакерам.
Правка: о состоянии гонки... Вы можете использовать GetTempPath, а затем создать временное имя файла с помощью
Path.Combine(Path.GetTempPath(), Path.ChangeExtension(Guid.NewGuid().ToString(), ".TMP"))
Я не знаю ни одного встроенного (в рамках фреймворка) класса, чтобы сделать это, но я думаю, что это не будет слишком большой проблемой, чтобы запустить свой собственный..
Очевидно, что это зависит от типа данных, которые вы хотите записать в него, и требуемой "security"..
Эта статья на DevFusion может быть хорошим местом для начала?