无法将文件从一个目录复制到应用程序文件夹

时间:2019-06-04 11:34:27

标签: c# file

我正在编写ac#桌面应用程序,我希望用户从打开的文件对话框中选择一个文件,然后程序会将文件复制到应用程序从中执行的位置:这是我目前无法使用的代码< / p>

import pandas as pd 
import matplotlib.pyplot as plt 
import numpy as np 

dataset = pd.read_csv("Startups (multiple linear regression).csv")
x=dataset.iloc[:,:-1].values
y=dataset.iloc[:,-1]


#Encode categorical variables (New York, California, Florida)
from sklearn.compose import ColumnTransformer, make_column_transformer
from sklearn.preprocessing import OneHotEncoder
preprocess = make_column_transformer((OneHotEncoder(),[-1]),remainder="passthrough")
x = preprocess.fit_transform(x)

现在我得到了

的错误
  

该文件正在被另一个程序使用

。当我编辑通过删除true初始化副本的代码时:

var dlg = new Microsoft.Win32.OpenFileDialog { 
    Title           = "Select File", 
    DefaultExt      = ".json", 
    Filter          = "Json File (.json)|*.json", 
    CheckFileExists = true 
};

if (dlg.ShowDialog() == true)
{
    try
    {
        var currentDirectory = System.Windows.Forms.Application.ExecutablePath;
        var destFile = Path.Combine(currentDirectory + "/temp/", dlg.FileName);

        File.Copy(dlg.FileName, destFile, true);
    }
    catch (Exception ex)
    {
        MessageBox.Show(string.Format("An error occured: " + ex.Message));
    }
}

我得到

的错误
  

文件已存在

从中选择它的目录中。

2 个答案:

答案 0 :(得分:4)

似乎您要写入的路径不正确

 System.Windows.Forms.Application.ExecutablePath

本身返回 exe文件,而不返回目录。试试

 var destFile = Path.Combine(
   Path.GetDirectoryName(Application.ExecutablePath), // Exe directory
  "temp",                                             // + Temp subdirectory
   Path.GetFileName(dlg.FileName));                   // dlg.FileName (without directory)

如果不确定temp是否存在,则必须创建它:

 Directory.CreateDirectory(Path.GetDirectoryName(destFile));

答案 1 :(得分:2)

使用下面的代码将文件从一个文件夹复制到另一个文件夹。

string[] filePaths = Directory.GetFiles("Your Path");
    foreach (var filename in filePaths)
    {
        string file = filename.ToString();

        //Do your job with "file"

        string str = "Your Destination"+file.ToString(),Replace("Your Path");
        if (!File.Exists(str))
        {
            File.Copy(file , str);
        }
    }