jacklikeaccp 2022-08-25 11:40 采纳率: 0%
浏览 12

.net Winform文件 复制文件不一致的问题

winform程序 使用File.Copy文件复制文件,进行比对时发现两个文件不一致(上传的ini格式和.key格式文件)。
问题相关代码,请勿粘贴截图

OpenFileDialog openFileDialogTemp = new OpenFileDialog();
openFileDialogTemp.Title = "选择要上传的文件";
const string imgExts = "文件 (.ini;.key)|.ini;.key";
openFileDialogTemp.Filter = imgExts;//可选择的文件格式 (|之前为显示,之后为控制后缀显示)
openFileDialogTemp.Multiselect = true;//多选设置
openFileDialogTemp.RestoreDirectory = true;
openFileDialogTemp.FilterIndex = 1;
if (openFileDialogTemp.ShowDialog() == DialogResult.OK)
{
if (openFileDialogTemp.FileNames.Count() > 0)
{
if (!Directory.Exists(Application.StartupPath + "\license\"))
{
Directory.CreateDirectory(Application.StartupPath + "\license\");
}
string fileMsg = "";
for (int i = 0; i < openFileDialogTemp.FileNames.Count(); i++)
{
//判断文件是否被占用
IntPtr vHandle = _lopen(openFileDialogTemp.FileNames[i], OF_READWRITE | OF_SHARE_DENY_NONE);
if (vHandle == HFILE_ERROR)
{
fileMsg += openFileDialogTemp.FileNames[i] + "文件被占用,请关闭后进行上传\n";
}
else
{
try
{
//var savePath = Path.Combine(targetDir, Path.GetFileName(item));
File.Copy(openFileDialogTemp.FileName, Application.StartupPath + "\license\" + Path.GetFileName(openFileDialogTemp.FileNames[i]));

                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("请确认文件" + openFileDialogTemp.FileNames[i] + "是否已存在于安装目录下");
                            LogHelper.Error(ex.ToString());
                            return;
                        }
                    }
                    CloseHandle(vHandle);
                }
                if (fileMsg.Length > 0)
                {
                    MessageBox.Show(fileMsg);
                }
            }
            this.DialogResult = DialogResult.OK;
            this.Close();
        }
            
运行结果及报错内容

不报错,但是复制的文件不一致

我想要达到的结果

做文件比对,两个文件要完全一致。

  • 写回答

1条回答 默认 最新

  • 於黾 2022-08-25 11:46
    关注

    你应该使用File.Copy带三个参数的重载
    第三个参数overwrite要填写true
    否则同名文件不覆盖
    你在反复测试时已经复制过一个文件
    下次不再复制了,当然就不一样了

    评论

报告相同问题?

问题事件

  • 创建了问题 8月25日

悬赏问题

  • ¥15 关于大棚监测的pcb板设计
  • ¥20 sim800c模块 at指令及平台
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计