我列出了列表框中的所有目录。
private void Form1_Load_1(object sender, EventArgs e)
{
listBox3.Items.Clear();
string[] dirs = Directory.GetDirectories("C:\\Users\\foo\\Desktop\\test");
foreach (string dir in dirs)
{
listBox3.Items.Add(dir);
}
}
我需要对所有列表框项执行一个函数。喜欢这个
Listbox.Items = foo;
encrypt(foo);
我在很多方面都尝试过,但我没有得到任何东西。
始终返回无法将项目从列表框转换为字符串的错误。我是怎么做到的?
我正在做一个学校项目,老师告诉我们要创建与隐私有关的东西,我正在研究一种带AES算法的SHA256加密算法,程序用户选择一个想要保持匿名的文件夹,选择一个passowrd并加密文件夹,只是用相同的密码可以解密文件夹,我的程序做得不好,如果我只选择一个文件夹,它只加密该文件夹中的文件,仅此而已,但传统上有人想要加密他们的文件是因为他们有很多,可能被组织成文件夹,因此我的问题,我需要程序列出所有文件夹和子文件夹,并逐个加密文件。
答案 0 :(得分:0)
您可以使用ListBox
方法(需要Linq:Cast
)将using System.Linq;
中的项目作为字符串列表进行检索。然后,您可以将它们传递给可以处理它们的方法:
List<string> directoryPaths = listBox3.Items.Cast<String>().ToList();
// Assuming you have a method that takes a list of strings:
EncryptDirectories(directoryPaths);
上面的方法需要List<string>
,在这种情况下,它是列表框中的所有项目。然后它可以遍历列表中的每个项目并逐个加密。在此示例中,它将每个项目传递给另一个执行单个目录实际加密的方法:
// Encrypts all files in all the directories (and their sub directories)
private static void EncryptDirectories(List<string> directoryPaths)
{
if (directoryPaths == null) return;
foreach (var directoryPath in directoryPaths)
{
EncryptDirectoryFiles(new DirectoryInfo(directoryPath));
}
}
// Encrypts all files in the specified directory and it's sub directories
private static void EncryptDirectoryFiles(DirectoryInfo directory)
{
if (directory == null) return;
if (directory.Exists)
{
foreach (var file in directory.EnumerateFiles())
{
// Pseudo encryption of file by adding an unknown extension
File.Move(file.FullName, file.FullName + ".encrypted");
}
// Recursively process any sub-directories
foreach(var subDirectory in directory.EnumerateDirectories())
{
EncryptDirectoryFiles(subDirectory);
}
}
}