Si le plantage est dû à une exception dans le constructeur de StreamWriter (ce qui semble probable), vous pouvez simplement le placer dans un bloc de capture d'exception.
De cette façon, vous pouvez faire en sorte que votre code poignée la situation plutôt que de tomber dans un tas.
En d'autres termes, quelque chose comme :
try {
file = new StreamWriter ("C:\\Users\\me\\sub\\" + post.title + ".txt");
catch (Exception e) { // Should also probably be a more fine-grained exception
// Do something intelligent, notify user, loop back again
}
En ce qui concerne le morphage d'un nom de fichier pour le rendre acceptable, la liste des caractères autorisés dans un grand nombre de systèmes de fichiers a été répondue ici .
Fondamentalement, la deuxième table dans cette page Wikipedia ( Comparison of filename limitations
) montre ce qui est autorisé et ce qui ne l'est pas.
Vous pourriez utiliser le remplacement par une expression rationnelle pour vous assurer que tous les caractères non valides sont transformés en quelque chose de valide, comme par exemple _
ou supprimées.