Skip to content

Latest commit

 

History

History
78 lines (63 loc) · 1.81 KB

File metadata and controls

78 lines (63 loc) · 1.81 KB

IO0005. Replace FileStream class with IFileSystem.FileStream for improved testability

Topic Value
Id IO0005
Severity Warning
Enabled True
Category System.IO.Abstractions

Description

Replace FileStream class with IFileSystem.FileStream for improved testability

Code with Diagnostic

using System.IO.Abstractions;

namespace SomeNameSpace
{
	public class WithOutFileSystem
	{
		private readonly IFileSystem _fileSystem;

		public WithOutFileSystem(IFileSystem fileSystem)
		{
			_fileSystem = fileSystem;
		}

		public void SomeMethod()
		{
			const string filePath = "C:\\temp.txt";

			using (FileStream fstream = new FileStream(filePath, FileMode.OpenOrCreate))
            {
                // преобразуем строку в байты
                byte[] array = System.Text.Encoding.Default.GetBytes(text);
                // запись массива байтов в файл
                fstream.Write(array, 0, array.Length);
                Console.WriteLine("Текст записан в файл");
            }
		}
	}
}

Code with Fix

using System.IO.Abstractions;

namespace SomeNameSpace
{
	public class WithOutFileSystem
	{
		private readonly IFileSystem _fileSystem;

		public WithOutFileSystem(IFileSystem fileSystem)
		{
			_fileSystem = fileSystem;
		}

		public void SomeMethod()
		{
			const string filePath = "C:\\temp.txt";

			using (FileStream fstream = _fileSystem.FileStream.Create(filePath, FileMode.OpenOrCreate))
			{
				// преобразуем строку в байты
				byte[] array = System.Text.Encoding.Default.GetBytes(text);
				// запись массива байтов в файл
				fstream.Write(array, 0, array.Length);
				Console.WriteLine("Текст записан в файл");
			}
		}
	}
}