Bonjour,
Mon probleme est assez simple, et pourtant je ne parviens pas a trouver de solutions sur le net: comment detecter les erreurs lors de l'ecriture d'un fichier avec ofstream, et notamment le fait que le disque soit plein?
J'ai essaye le code que l'on trouve dans la faq:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ofstream file( "fichier.txt" );
if ( !file )
{
cerr << "Erreur de création\n";
return;
}
file << "Une ligne\n";
if ( ! file )
{
cerr << "Erreur d'écriture\n";
return;
}
cout << "L'écriture a réussi\n"; |
mais l'erreur n'est pas detectee (mon disque est plein, j'ecris dans le fichier un string beaucoup plus gros, et l'ecriture a bien echoue puisque la taille de fichier.txt est nulle).
J'ai egalement teste:
if ( ! (file << "Une ligne\n") )
ou encore:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| ofstream file( "fichier.txt" );
file << "Une ligne\n";
if ( file.fail() || ! file.good() )
{
cerr << "Erreur de création\n";
return;
}
file.flush();
if ( file.fail() || ! file.good() )
{
cerr << "Erreur de création\n";
return;
}
file.close();
if ( file.fail() || ! file.good() )
{
cerr << "Erreur de création\n";
return;
}
cout << "L'écriture a réussi\n"; |
mais rien a faire, l'erreur d'ecriture n'est jamais detectee!
Est-ce que vous sauriez comment faire?
Merci d'avance,
Romain
Partager