Bonjour à tous,
J'ai développé une application qui lit et écrit de gros fichiers binaires en c++ (de l'ordre du go). Lorsque les fichiers lus par mon application sont en local, tout va bien. A l'inverse, lorsque les fichiers lus sont sur une autres machine du réseau local, mon application ne plante pas mais semble "mal lire" les fichiers (des octets différents, ...).
J'utilise le code suivant pour initialiser mon flux de lecture:
std::ifstream inGraphe(cheminDuFichierSurLeReseau.c_str(), ios::in | ios::binary );
Celui-ci est utilisé pour lire des primitives (notamment entiers non signés 32 bits):
void lireBinaire(ifstream& in, type_val& v){
in.read((char*)&v, sizeof(v));
}
ainsi que des vecteurs d'objets. Je lis notamment d'une traite un vecteur d'objets sérialisé représentant plus de 99% du volume du fichier, via la méthode:
template < typename type_val >
inline void lireSequenceBinaire(ifstream& in, type_val* p_v, size_t nbr_){
in.read(reinterpret_cast<char*>(p_v), sizeof(type_val)*nbr_);
}
D'où peut provenir ce comportement anormal lorsque je lis le fichier sur une machine du réseau local et non sur la machine où s'exécute l'application?
Vous remerciant par avance,
Cordialement.
Message édité par godbeni le 27-01-2012 à 11:19:23