我想要做的是在C#(C Sharp)中使用FTP上传网站.所以我需要上传文件夹中的所有文件和文件夹,保持其结构.我正在使用这个FTP类:http://www.codeproject.com/Tips/443588/Simple-Csharp-FTP-Class用于实际上传.
我得出结论,我需要编写一个递归方法,遍历主目录的每个子目录并上传其中的所有文件和文件夹.这应该将我的文件夹的精确副本复制到FTP.问题是......我不知道怎么写这样的方法.我以前写过递归方法,但我是FTP部分的新手.
这是我到目前为止:
private void recursiveDirectory(string directoryPath)
{
string[] filePaths = null;
string[] subDirectories = null;
filePaths = Directory.GetFiles(directoryPath, "*.*");
subDirectories = Directory.GetDirectories(directoryPath);
if (filePaths != null && subDirectories != null)
{
foreach (string directory in subDirectories)
{
ftpClient.createDirectory(directory);
}
foreach (string file in filePaths)
{
ftpClient.upload(Path.GetDirectoryName(directoryPath), file);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但它远未完成,我不知道如何继续.我确定比我更需要知道这一点!提前致谢 :)
哦,如果它报告它的进展也会很好:)(我正在使用进度条)
编辑:可能不清楚...如何使用FTP上传包含所有子目录和文件的目录?
我有兴趣使用C#获取计算机中的所有电源计划.
我以为你可能会以某种方式使用API PowerEnumerate函数:
DWORD WINAPI PowerEnumerate(
_In_opt_ HKEY RootPowerKey,
_In_opt_ const GUID *SchemeGuid,
_In_opt_ const GUID *SubGroupOfPowerSettingsGuid,
_In_ POWER_DATA_ACCESSOR AccessFlags,
_In_ ULONG Index,
_Out_opt_ UCHAR *Buffer,
_Inout_ DWORD *BufferSize
);
Run Code Online (Sandbox Code Playgroud)
但是我不知道怎么样,因为我真的不知道C.所以..我怎么样,列举所有可用的电力计划并创建一个列表.然后,我希望能够访问每个电源计划GUID及其"用户友好名称".
那么..也许如果有人擅长使用C#的WinAPI想要提供帮助,那就太棒了 - 或者如果有人有更好的解决方案.我真的试图找到一个很好的答案,但似乎没有.我认为这会对很多人有所帮助.
有人能帮忙吗?
我正在尝试创建一个返回计算机名称的函数。这是我到目前为止:
char* getName()
{
char buffer[MAX_COMPUTERNAME_LENGTH + 1];
DWORD length = sizeof(buffer);
GetComputerNameEx((COMPUTER_NAME_FORMAT)0, buffer, &length);
return buffer;
}
Run Code Online (Sandbox Code Playgroud)
但它并没有真正起作用。似乎它返回一个带有非常奇怪的字符编码的字符串。我将不胜感激所有帮助。