Question

Je suis en train de lire depuis quelques fichiers en utilisant quelque chose comme ceci

IO.foreach("TeamFields.txt") { |line| fieldNames.push(line.chomp) }

Il fonctionne très bien lors de l'exécution de la de la ligne de commande, mais quand je package à un .exe avec des chaussures et de l'exécuter ne peut pas trouver le fichier. Y at-il un moyen de spécifier un chemin relatif au fichier .exe ou dois-je fournir cheminfichier complet (par exemple « c: \ files \ TeamFields.txt »)? Merci pour l'aide.

Était-ce utile?

La solution

Ceci est parce que votre exécutable est pas exécuté avec le répertoire courant correct.

Soit fixer le répertoire courant (par exemple dans le raccourci) ou modifier votre programme Ruby pour définir automatiquement le répertoire de travail dans le répertoire du programme avec:

Dir.chdir(File.dirname($PROGRAM_NAME))

Autres conseils

Vous devez définir « Répertoire des applications en cours » correctement avant d'aller relative. L'utilisateur peut exécuter votre application avec différents démarrage dir ou système peut appeler votre application avec différents dir.

Si les fichiers en question sont dans le dossier de votre application, la seule chose que vous devez faire est d'obtenir ce dossier, et mettez-être à jour.

Je ne suis pas le programme en Ruby, mais je fais avec les fenêtres, et les chances sont le chemin relatif sera basé sur l'emplacement du fichier .exe.

Alors, oui, vous êtes probablement mieux passer un chemin complet pour le nom du fichier.

La __FILE__ constante contiendra le chemin complet vers le fichier en cours d'exécution. Vous pouvez ensuite utiliser les méthodes de la classe de fichiers pour dépouiller le nom du fichier, ajoutez le chemin relatif pour tout autre fichier dans votre package que vous voulez et résoudre le résultat.

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