首页 > 解决方案 > File.WriteAllBytes 执行而不创建文件

问题描述

我需要使用 Xamarin Android 将 Mono Runtime 中的 MYSQL Db 提取到使用.NET Web API Controller Action的服务器目录中。尽管代码运行良好,但有一些 Android 设备尽管控制器操作会返回 Success() ,但在服务器目录中却找不到 MySQL 数据库。我必须从设备设置中重置应用程序数据才能使其再次工作。任何人都可以帮助我了解控制器操作如何正确执行而不在该目录中创建任何文件?

我尝试更改代码以发送 null 而不是 byte[] 但服务器返回空指针异常

我尝试更改代码以发送仅包含单个字节的字节 [],并且它仍然在服务器目录中创建了适当的文件。

下面是提取 MySQL 数据库(单声道运行时)的代码:

        try
        {
            var filestream = new FileStream(path, FileMode.Open);
            var m = new MemoryStream();
            filestream.CopyTo(m);
            filestream.Close();

            return m.ToArray();
        }
        catch (Exception e)
        {
            Console.WriteLine("Something went wrong: " + e.InnerException?.Message);
        }
        return null;

这是处理提取文件的代码。(.NET Web API 控制器)

        try
        {
            var folder = Directory.CreateDirectory(@"E:\SQLiteBackup");
            var filename = "DB_" + AppContext.UserName + "_" + DateTime.Now.ToString("yyyyMMdd");
            var path = $"{folder.FullName}\\{filename}";
            File.WriteAllBytes(path, backupBytes);
            return Success();
        }
        catch (Exception ex)
        {
            return Fail(ex, "Something went wrong");
        }

标签: c#xamarin.androidwritefile

解决方案


推荐阅读