2010-05-28 15 views
0

Veuillez me suggérer une solution multiplateforme C# pour copier un fichier en cours. La méthode devrait être capable de copier le fichier sur Mono aussi bien sur .NET.C#/CopyFile: Code multiplate-forme avec Progress

P.S. La plupart des solutions se réfèrent ici à CopyFileEx (qui utilise PInvoked et je ne suis pas sûr si cela fonctionnera sur un Mono)

+0

Ce n'est pas seulement mono, quel système d'exploitation ciblez-vous? –

Répondre

4

Vous pouvez copier manuellement entre des flux de fichiers, comme la méthode CopyFile dans MonoDevelop's file deployer, qui a un rappel après chaque bloc de 1k.

Il est probablement un peu plus lent que File.Copy, mais si les rappels de progression sont essentiels, vous n'avez pas beaucoup de choix. Dans le cas du copieur de fichiers MonoDevelop, nous écrivons sur des systèmes de fichiers distants montés localement via FUSE.

+0

Merci Michael. –

0

Avez-vous essayé la méthode File.Copy? Je n'ai aucune expérience avec le mono, mais je pense que ça devrait marcher. Vous devrez vous soucier des chemins de fichier, ce qui est différent de l'API.

0

StreamWriter devrait fonctionner :),

Charger des données dans la mémoire par l'intermédiaire StreamReader?, Et écrire via StreamWriter ou BinaryWriter. et il y a même AsyncWrite si vous voulez :)

J'ai un format d'archive personnalisé qui fonctionne sur Mono, en utilisant ces API mentionnées ci-dessus. ne devrait pas être différent pour vous.