2010-12-13 25 views
1

J'ai (plus ou moins) le code suivant:Enregistrement d'un fichier dans un dossier créé par l'utilisateur

private static void SaveFolder(MyFolder folder, string location) 
{ 
    string folderName = Path.Combine(location, folder.Name); 
    DirectoryInfo di = Directory.CreateDirectory(folderName); 
    foreach (MyFile childItem in folder.Children) 
    { 
    string fileName = Path.Combine(di.FullName, childItem.Name); 
    byte[] payload = GetFilePayload(childItem); 
    File.WriteAllBytes(fileName, payload); 
    } 
} 

L'application est un bureau add-in, en cours d'exécution en vertu d'un utilisateur qui est admin sur la machine (WinXP)

Je crée le dossier sans problèmes, mais lorsque je crée les fichiers (ligne File.WriteAllBytes), j'obtiens une exception UnauthorizedAccessException. Pourquoi ne puis-je pas enregistrer le fichier dans un dossier que je viens de créer?

+0

Que contient folder.Children? Il s'agit probablement du dossier iteslf. – TalentTuner

+0

@Saurabh 'folder.Children' contient des objets de type' MyFile'. –

+0

@Saurabh - oui, le 'folder.Children' contient des éléments qui peuvent être sauvegardés dans un fichier. Et si j'essaie de les enregistrer à l'emplacement 'emplacement' ils sont sauvegardés sans problèmes. – SWeko

Répondre

1

Désolé, les gens, ce fut un bogue stupide dans un autre code, qui essentiellement transformé

File.WriteAllBytes(fileName, payload); 

dans

File.WriteAllBytes(folderName, payload); 

:(

Le système d'exploitation a essayé d'enregistrer un fichier avec le même nom que le dossier, et le WTF est l'exception que je recevais, qui m'envoie sur une tangente