Преобразовать файл в массив в c# с помощью System.IO - PullRequest
0 голосов
/ 30 марта 2020

У меня проблема с преобразованием моего файла в байтовый массив. Итак, я исследовал, что самый надежный способ сделать это заключается в следующем:

byte[] bytes = System.IO.File.ReadAllBytes(filename);

Проблема в том, что в нашей системе уже есть классы: System.cs и File.cs. Это совпадает с вышеупомянутым способом. Слово File и System использует мои существующие классы в качестве ссылки. Есть ли другой способ сделать это? ТИА

Ответы [ 3 ]

0 голосов
/ 30 марта 2020

Решением может быть использование именованного импорта либо для ваших собственных классов, либо для исходных типов System и File. Например, если вы хотите использовать именованный импорт для стандартной библиотеки Тип файлов, вы можете сделать это следующим образом, чтобы избежать конфликта имен:

using SystemFiles = System.IO.File;

Эта ссылка также имеет пример: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-directive

0 голосов
/ 30 марта 2020

Опция 1: using static directive

using static System.IO.File;
...
ReadAllBytes(filename);

Опция 2: создание отдельного класса, обертывающего метод

using System.IO;
...
public static class FileReader
{
    public static byte[] ReadAllBytes(string filename) => File.ReadAllBytes(filename);
}

Использование:

 FileReader.ReadAllBytes(filename);

Вариант 3: Использовать global пространство имен

global::System.IO.File.ReadAllBytes(filename);
0 голосов
/ 30 марта 2020

Вы можете сделать:
using MsSystem = System;

Тогда в вашем коде:
byte[] bytes = MsSystem.IO.File.ReadAllBytes(filename);

Или; Вы можете использовать глобальные ссылки на глобальное пространство имен, оно может использоваться для решения проблем, с помощью которых вы можете переопределять типы. Например:

class foo
{
    class System
    {

    }

}

Использование:

global::System.IO.File.ReadAllBytes(filename);

...