abdul subhan mohammed Ответов: 2

Проблема с получением данных из файлового потока с#


Дорогие Все,

У меня есть зашифрованный файл, и я пытаюсь расшифровать его с помощью FileStream C#.

Я передаю путь к файлу для создания файлового потока, и когда я пытаюсь извлечь данные из FileStream, данные равны нулю.

SampleCode
FileStream fs = new FileStream(@"" + offlinePath, FileMode.Create);
                    WriteToFile("converted to stream file: " + @"" + offlinePath);
                    using (StreamReader sr = new StreamReader(fs))
                    {
                        WriteToFile("Reading file");
                        string data = sr.ReadToEnd(); //Getting empty
                        WriteToFile("Data: " + data);
                        offlineExamResult = Cryptography.Decrypt<OfflineExamResult>(data);
                        WriteToFile("Offline result file DECRYPTED"); //log file
                    }


Что я уже пробовал:

public string UploadOfflineResult()
        {
            var pathSouce = Directory.GetParent(Directory.GetParent(Environment.SystemDirectory.ToString()).ToString()).FullName;
            var offlinePath = pathSouce +  ConfigurationManager.AppSettings["resultFile"];
            WriteToFile(offlinePath);
            FileInfo _file = new FileInfo(offlinePath);
            WriteToFile(_file.Exists ? "Offline result file exist" : "Offline result file does not exist");


            if (_file.Exists && getPing())
            {
                WriteToFile("Working ON offline exam result file");
                OfflineExamResult offlineExamResult = null;
                try
                {
                    FileStream fs = new FileStream(@"" + offlinePath, FileMode.Create);
                    WriteToFile("converted to stream file: " + @"" + offlinePath);
                    using (StreamReader sr = new StreamReader(fs))
                    {
                        WriteToFile("Reading file");
                        string data = sr.ReadToEnd(); //Getting empty
                        WriteToFile("Data: " + data);
                        offlineExamResult = Cryptography.Decrypt<OfflineExamResult>(data);
                        WriteToFile("Offline result file DECRYPTED");
                    }
                }
                catch (Exception ex)
                {
                    ex = ex.InnerException; //Avoid warning
                    return JsonConvert.SerializeObject(
                        new { success = false, message = "Invalid result file content" },
                        Formatting.None,
                        new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
                }


                CommunicationHelper.UpdateCandidateOfflineExamResultUsingWindowService(JsonConvert.SerializeObject(offlineExamResult, Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }));
                WriteToFile("UpdatedOfflineCandidateExamResult: CandidateSessionID=" + offlineExamResult.CandidateSessionID + " ");
                return true.ToString();


            }
            return false.ToString();
        }


Кто-нибудь может пожалуйста помочь мне.

Спасибо

phil.o

Вы забыли описать проблему. Есть сообщение об ошибке? или он ведет себя не так, как вы ожидали?

Richard MacCutchan

Ваш код создает новый пустой файл. Там нечего читать.

2 Ответов

Рейтинг:
1

maj000

При создании вашего FileStream вы должны использовать FileMode.Открыть, а не файловый режим.Создать, т. е.

FileStream fs = new FileStream(@"" + offlinePath, FileMode.Open);
Использование FileMode.Create создаст новый файл (перезаписав файл, если он уже существует) во время FileMode.Open используется для открытия существующего файла.

Кроме того, вы можете передать имя файла в качестве параметра при создании StreamReader и вообще не создавать файловый поток.
using (StreamReader sr = new StreamReader(@"" + offlinePath))


Рейтинг:
1

Dave Kreskowiak

Если data приходит без каких-либо данных, в файле не было ничего, что можно было бы прочитать.