Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中跨平台复制文件?_C#_File_Copy_Cross Platform - Fatal编程技术网

如何在C#中跨平台复制文件?

如何在C#中跨平台复制文件?,c#,file,copy,cross-platform,C#,File,Copy,Cross Platform,基本上,我需要复制一个文件(FAT或NTFS都可以),而无需使用MicrosoftSystem.IO.file.copy库。我使用的是COSMOS(C#开源托管操作系统),因为它不是Windows,所以File.Copy不起作用 如果您有任何帮助,我们将不胜感激。您是否有System.IO命名空间的其他部分?最值得注意的是,各种溪流 如果没有,那么我看不出你应该如何复制任何东西 但是,假设您可以打开文件进行读写,您可以轻松实现自己的复制方法: private void CopyFile(stri

基本上,我需要复制一个文件(FAT或NTFS都可以),而无需使用Microsoft
System.IO.file.copy
库。我使用的是COSMOS(C#开源托管操作系统),因为它不是Windows,所以
File.Copy
不起作用


如果您有任何帮助,我们将不胜感激。

您是否有System.IO命名空间的其他部分?最值得注意的是,各种溪流

如果没有,那么我看不出你应该如何复制任何东西

但是,假设您可以打开文件进行读写,您可以轻松实现自己的复制方法:

private void CopyFile(string source, string dest)
{
    using (var input = new FileStream(source, FileMode.Open, FileAccess.Read))
    using (var output = new FileStream(dest, FileMode.OpenOrCreate, FileAccess.Write))
    {
        byte[] data = new byte[1024];
        int bytesRead = 0;
        do
        {
            bytesRead = input.Read(data, 0, data.Length);
            if (bytesRead > 0)
                output.Write(data, 0, data.Length);
        } while (bytesRead > 0);
    }
}

(上面的代码未经测试)

我猜这类IO有COSMOS例程。这是自.net 4以来新出现的,我认为COSMOS可能没有。但是如果它在那里,那么无论如何OP应该使用它,而不是重新实现它。它与
COSMOS
无关。这是一个不起作用的替代方案。因为COSMOS不支持这一点,所以您必须编写自己的FS驱动程序、HDD驱动程序以及整个shabang。哦,好吧,再见,宇宙