我有一个带有backgroundworker(bgw)的Windows窗体应用程序。 这个bgw完成了一些任务,在这些任务中,有以下几个: 步骤2 - 使用以下代码将文件从一个文件夹复制到另一个文件夹:
public static void CopiarArquivos()
{
string fileName;
string sourcePath = System.Windows.Forms.Application.StartupPath;
const string targetPath = @"C:\CWEB\CwebIntegracaoMovel";
if (sourcePath == targetPath) return;
string destFile;
// To copy a folder's contents to a new location:
// Create a new target folder, if necessary.
if (!Directory.Exists(targetPath))
{
Directory.CreateDirectory(targetPath);
}
if (Directory.Exists(sourcePath))
{
string[] files = Directory.GetFiles(sourcePath);
//Invoke((MethodInvoker)(() => {
//});
// Copy the files and overwrite destination files if they already exist.
foreach (string s in files)
{
FileInfo fi = new FileInfo(s);
// Use static Path methods to extract only the file name from the path.
fileName = Path.GetFileName(s);
destFile = Path.Combine(targetPath, fileName);
if (!ArquivosIguais(s, destFile) &&
(!fileName.Contains("WizardIntegracao.exe") ||
(fileName.Contains("WizardIntegracao.exe") && !File.Exists(destFile))))
{
fi.CopyTo(destFile, true);
//File.Copy(s, destFile, true);
//new System.Security.Permissions.FileIOPermission(
// System.Security.Permissions.FileIOPermissionAccess.Read, new string[] { destFile }).Demand();
}
}
}
}
副本工作正常(因为我测试了一些其他的东西,有一些注释掉的行) 在bgw的第4步中,我更改了在步骤2中复制的.config文件的某些设置,其中包含以下代码:
public static void AlteraBaseAddress(string porta)
{
string path = "C:\\CWEB\\CwebIntegracaoMovel\\ServicoIntegracao.exe.config";
string conteudo = File.ReadAllText(path);
int inicio = conteudo.IndexOf("http://");
int fim = conteudo.IndexOf("/ServicoIntegracao/Servico");
conteudo = conteudo.Remove(inicio, fim - inicio);
conteudo = conteudo.Insert(inicio, String.Format("http://localhost:{0}", porta));
File.WriteAllText(path, conteudo);
}
当我运行我的应用程序时,我得到了例外:
Ocorreu um erro no processo de instalação do serviço:
O acesso ao caminho 'C:\CWEB\CwebIntegracaoMovel\ServicoIntegracao.exe.config' foi negado..
em System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
em System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
em System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
em System.IO.StreamWriter.CreateFile(String path, Boolean append)
em System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
em System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding)
虽然在尝试更改.config文件的内容时发生了错误,但据我所知,在复制文件时发生错误,它们被我自己的应用程序锁定,然后我就可以了不会覆盖它的内容。
有人知道如何使这项工作吗?
答案 0 :(得分:0)
要更改应用程序配置,您应该使用System.Configuration.Configuration类。
有一个关于如何使用Save方法执行此操作的完整示例。
http://msdn.microsoft.com/en-us/library/ms134088.aspx
祝你好运。