문제

다음과 같은 것을 사용하여 몇 개의 파일을 읽으려고 합니다.

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

명령줄에서 실행할 때는 제대로 작동하지만 신발과 함께 .exe로 패키지하고 실행하면 파일을 찾을 수 없습니다..exe와 관련된 경로를 지정하는 방법이 있습니까? 아니면 전체 파일 경로를 제공해야 합니까(예:"c:\files eamFields.txt")?도와 주셔서 감사합니다.

도움이 되었습니까?

해결책

이는 올바른 현재 디렉토리로 실행 가능한 실행이 실행되지 않기 때문입니다.

현재 디렉토리 (예 : 바로 가기)를 수정하거나 Ruby 프로그램을 수정하여 작업 디렉토리를 프로그램 디렉토리로 자동 설정하여 다음과 같습니다.

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

다른 팁

상대적으로 가기 전에 "현재 응용 프로그램 디렉토리"를 올바르게 설정해야합니다. 사용자는 다른 시작 딥으로 앱을 실행할 수 있거나 시스템은 다른 DIR로 앱을 호출 할 수 있습니다.

문제의 파일이 앱 폴더에있는 경우 해당 폴더를 가져 와서 현재로 설정하는 것입니다.

나는 Ruby로 프로그래밍하지 않지만 Windows에서는 프로그래밍을 하며 상대 경로는 .exe 파일의 위치를 ​​기반으로 할 가능성이 높습니다.

그렇습니다. 파일 이름의 전체 경로를 전달하는 것이 더 나을 것입니다.

상수 __FILE__ 현재 실행중인 파일의 전체 경로가 포함됩니다. 그런 다음 파일 클래스의 메소드를 사용하여 파일 이름을 벗기고 패키지의 다른 파일에 대한 상대 경로를 추가하고 원하는 결과를 해결할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top