Question

J'ai un problème avec mon code C # Je n'arrive pas à faire fonctionner ma déclaration IF, je pense qu'il essaie de référencer la mauvaise partie du code pour une raison quelconque. J'ai vérifié que j'ai toutes les bonnes références et toutes les bonnes utilisations. J'ai collé le code offensant ci-dessous:

FolderBrowserDialog dlg2 = new FolderBrowserDialog();
if (dlg2.ShowDialog() == DialogResult.OK)
//do whatever with dlg.SelectedPath
{

    string searchPattern = "*";
    DirectoryInfo source = new DirectoryInfo(dlg.SelectedPath);
    DirectoryInfo target = new DirectoryInfo(dlg2.SelectedPath);

    DirectoryInfo dir = new DirectoryInfo(dlg.SelectedPath);
    FileInfo[] fi = dir.GetFiles("*", SearchOption.AllDirectories);
    {
        if (fi.LastWriteTime.Date == DateTime.Today.Date)
        {
            FileInfo[] sourceFiles = source.GetFiles(searchPattern, SearchOption.AllDirectories);
            for (int i = 0; i < sourceFiles.Length; ++i)
                File.Copy(sourceFiles[i].FullName, target.FullName + "\\" + sourceFiles[i].Name, true);
        }
    }

Toute aide qui pourrait être apportée serait appréciée avec reconnaissance.

Était-ce utile?

La solution

Ce que vous voulez faire, c'est probablement cela?

        FileInfo[] fis = dir.GetFiles("*", SearchOption.AllDirectories);
        foreach (FileInfo fi in fis)
        {
            if (fi.LastWriteTime.Date == DateTime.Today.Date)
            {
                FileInfo[] sourceFiles = source.GetFiles(searchPattern, SearchOption.AllDirectories);
                for (int i = 0; i < sourceFiles.Length; ++i)
                    File.Copy(sourceFiles[i].FullName, target.FullName + "\\" + sourceFiles[i].Name, true);
            }
        }

Autres conseils

Bien, fi est un tableau donc fi.LastWriteTime.Date == DateTime.Today.Date donnerait cette erreur. Correctement.

Vous ne semblez pas utiliser les répertoires retournés pour autre chose, donc je ne suis pas en mesure de suggérer un «correctif».

Vous appelez LastWriteTime sur le tableau, et un tableau n'a pas cette propriété.

Vous devez appeler LastWriteTime sur les membres du tableau, par exemple

fi[0].LastWriteTime

Ou pour itérer sur tous les fichiers:

foreach(var file in fi) 
{
   if(file.LastWriteTime.Date == DateTime.Today.Date)
   {
       ....
   }
}

L'erreur est simple que vous utilisez LastWriteTime sur le tableau au lieu de l'élément FileInfo. Vous devez utiliser un index dans le code comme celui-ci:

fi[0].LastWriteTime.Date  ///your code

Remplacez 0 par votre index num ou utilisez-le dans une boucle foreach comme ceci:

foreach(var item in fi)
{
            if (item.LastWriteTime.Date == DateTime.Today.Date)
            {
                FileInfo[] sourceFiles = source.GetFiles(searchPattern, SearchOption.AllDirectories);
                for (int i = 0; i < sourceFiles.Length; ++i)
                    File.Copy(sourceFiles[i].FullName, target.FullName + "\\" + sourceFiles[i].Name, true);
            }
}

Comme indiqué précédemment, cette propriété n'est pas valide sur un tableau. Il suffit de joindre votre fichier avec une boucle foreach:

foreach(FileInfo fi in dir.GetFiles("*", SearchOption.AllDirectories))
{
  if (fi.LastWriteTime.Date == DateTime.Today.Date)
  {
     FileInfo[] sourceFiles = source.GetFiles(searchPattern, SearchOption.AllDirectories);
     for (int i = 0; i < sourceFiles.Length; ++i)
       File.Copy(sourceFiles[i].FullName, target.FullName + "\\" + sourceFiles[i].Name, true);
   }
 }

Vous avez besoin

foreach(FileInfo fi in dir.GetFiles("*", SearchOption.AllDirectories))
{
    if (fi.LastWriteTime.Date == DateTime.Today.Date)
    {
        FileInfo[] sourceFiles = source.GetFiles(searchPattern, SearchOption.AllDirectories);
        for (int i = 0; i < sourceFiles.Length; ++i)
            File.Copy(sourceFiles[i].FullName, target.FullName + "\\" + sourceFiles[i].Name, true);
    }
}

Vous êtes Missinf A pour Loop:

 for (int i = 0; i < fi.Length; ++i)
 {
     if (fi[i].LastWriteTime.Date == DateTime.Today.Date)
     ...
 }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top