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:
	
	| 12
 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:
	
	| 12
 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