Tôi đang sử dụng io/ioutil
để đọc một tập tin văn bản nhỏ:Làm cách nào để mở tệp bằng các đường dẫn tương đối trong Go?
fileBytes, err := ioutil.ReadFile("/absolute/path/to/file.txt")
Và đó hoạt động tốt, nhưng điều này là không chính xác cầm tay. Trong trường hợp của tôi, các tập tin tôi muốn mở là trong GOPATH của tôi, ví dụ:
/Users/matt/Dev/go/src/github.com/mholt/mypackage/data/file.txt
Kể từ thư mục data
cưỡi quyền cùng với các mã nguồn, tôi rất muốn chỉ định đường dẫn tương đối:
data/file.txt
Nhưng sau đó tôi nhận được lỗi này:
panic: open data/file.txt: no such file or directory
Làm thế nào tôi có thể mở các file sử dụng đường dẫn tương đối của họ, đặc biệt là nếu họ sống bên cạnh đang Go của tôi?
Các GOPATH có không phải là một ý nghĩa lớn khi chương trình của bạn được biên dịch, và thậm chí ít hơn khi bạn phân phối nó. –
Những gì bạn có vẻ muốn trông giống như một số nhúng của các tập tin trong chương trình biên dịch của bạn. –
Loại ... ngoại trừ tôi muốn các tệp dữ liệu tách biệt với nguồn. Các tệp dữ liệu quan trọng đối với chức năng của chương trình. Vì vậy, khi ai đó kéo xuống mã nguồn của tôi (với các tệp dữ liệu bên cạnh nó) và biên dịch và chạy nó, các tệp dữ liệu được tải bằng cách sử dụng đường dẫn tương đối vì chúng tồn tại gần mã nguồn hoặc gần nơi chương trình đang thực thi. – Matt