Question

J'ai une application qui est localisée pour une utilisation en Europe.

J'ai une option de menu qui charge un fichier à partir du disque.

Cette opération fonctionne bien sur ma machine dev, mais ne fonctionne pas sur la machine virtuelle que j'utilise pour tester d'autres systèmes d'exploitation _ français par exemple, espagnol etc.

A FileNotFoundException est généré lorsque le StreamReader tente d'ouvrir le fichier.

Il dit "Impossible de trouver le fichier C: \ Program Files \ MyCompany \ MyTool \ bin \ Files \ debug.txt '"

La chose est, le fichier existe, au bon endroit et avec le nom de fichier correct.

Les noms de répertoires sur le système d'exploitation cible (français) sont les mêmes que la machine dev.

Toutes les idées?

string ourPath =   System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);

           try
        {
            System.IO.StreamReader sr = System.IO.File.OpenText(ourPath + @"\bin\Files\debug.txt");
            string input = null;
            while ((input = sr.ReadLine()) != null)
            {
                m_text.Append(input);
            }
            sr.Close();
        }
        catch (System.IO.FileNotFoundException)
        {
            MessageBox.Show("LoadDebugOptions: File Not Found: " + ex.Message);
        }
Était-ce utile?

La solution

Ok trouvé le problème.

déterminé que le système d'exploitation a été en train de lire le fichier affiché dans l'explorateur comme « debug.txt » comme « debug.txt.txt ».

Ceci a été déterminé à l'aide d'un appel à System.IO.Directory.GetFiles pour lister les fichiers dans le répertoire cible.

Si je supprime l'extension txt de sorte que l'explorateur Windows, il affiche comme « debug » le fichier se trouve.

Turns out EXplorer extensions de fichier cache de types connus sur la machine cible.

  

Pour votre information ---------------------------------------------- ------------------

     

Ouvrir Explorer, sélectionnez Outils-> Options des dossiers puis l'onglet Affichage.

     

Faites défiler vers le bas et décochez "Masquer les extensions des types de fichiers connus".

Autres conseils

Pour vous assurer que vous êtes dans le bon dossier, regardez Environment.SpecialFolders

par exemple.

string path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);

Ensuite, vérifiez également les autorisations sur le fichier spécifique.

Je voudrais aussi essayer d'utiliser

File.Exists()

avant de l'ouvrir. Et un petit conseil est d'utiliser

Path.Combine()

Lors de la combinaison de 2 parties d'un chemin d'accès.

Peut-être que le préfixe est erroné: C:\Program Files

Par exemple, pour les installations brésiliennes de Windows portugais ce dossier devient "C:\Arquivos de Programas\"; vous devriez vous assurer que vos fenêtres installations ne sont pas la même « fonction ».

Si ce code exemple exécute dans ce dossier, vous pourriez utiliser un chemin relatif.

Vous pouvez également essayer d'utiliser ourPath = "%ProgramFiles%\MyCompany\MyTool\

Il peut être dû à exception de sécurité que l'utilisateur actuel essaie de lire ne dispose pas d'autorisation suffisante. Je l'ai rencontré plusieurs fois que ....

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top