Tôi muốn mở một tệp nhất định "directory/subdirectory/file.txt"
trong golang. Cách được đề nghị để thể hiện một con đường như vậy trong một cách bất khả tri hệ điều hành (tức là dấu gạch chéo ngược trong Windows, dấu gạch chéo chuyển tiếp trong Mac và Linux) là gì? Một cái gì đó giống như mô-đun os.path
của Python?Làm cách nào để tạo đường dẫn tệp crossplatform trong Go?
Trả lời
Để tạo và điều khiển đường dẫn dành riêng cho hệ điều hành, hãy sử dụng trực tiếp os.PathSeparator
và gói path/filepath
.
Phương pháp thay thế là luôn sử dụng '/'
và gói path
trong suốt chương trình của bạn. Gói path
sử dụng '/'
làm dấu phân tách đường dẫn bất kể hệ điều hành. Trước khi mở hoặc tạo tệp, hãy chuyển đổi đường dẫn/-parparated thành chuỗi đường dẫn dành riêng cho hệ điều hành bằng cách gọi filepath.FromSlash(path string)
. Đường dẫn được hệ điều hành trả về có thể được chuyển đổi thành đường dẫn/-parparated bằng cách gọi filepath.ToSlash(path string)
.
Đi có gói path
để tham gia và chia nhỏ đường dẫn tệp nhưng bạn không cần sử dụng nó. Đi xử lý dấu gạch chéo về phía trước như là seperator phổ quát. "directory/subdirectory/file.txt"
sẽ được mở chính xác bất kể hệ điều hành thời gian chạy là gì.
Sử dụng path/filepath
thay vì path
. path
chỉ dành cho các đường dẫn được phân tách bằng dấu gạch chéo chuyển tiếp (chẳng hạn như đường dẫn được sử dụng trong URL), trong khi path/filepath
điều khiển các đường dẫn trên các hệ điều hành khác nhau.
Phải được đánh dấu là câu trả lời đúng, khá dễ hiểu hơn - chỉ cần sử dụng filepath ở khắp mọi nơi và ... lợi nhuận! – QtRoS
- 1. Làm cách nào để mở tệp bằng các đường dẫn tương đối trong Go?
- 2. Cách tạo tệp mới bằng đường dẫn?
- 3. Làm cách nào để tạo một đường dẫn ngẫu nhiên?
- 4. Tạo đường dẫn tệp trong C#
- 5. cách tìm hiểu xem đường dẫn có dẫn đến tệp thi hành không?
- 6. Làm cách nào để đặt đường dẫn trong Visual Studio?
- 7. Cách giữ đường dẫn tệp trong app.config
- 8. Cách xử lý ~ trong đường dẫn tệp
- 9. Làm cách nào để xóa hậu tố tệp và phần đường dẫn khỏi chuỗi đường dẫn trong Bash?
- 10. cách tạo/khởi tạo đối tượng tệp bằng cách sử dụng đường dẫn tệp html5
- 11. Làm cách nào để ghi đè đường dẫn của PHP để sử dụng đường dẫn MAMP?
- 12. Làm cách nào để sửa đổi đường dẫn tệp trong tập hợp các bản vá Git?
- 13. Làm cách nào để thiết lập đường dẫn xây dựng Eclipse và đường dẫn lớp từ tệp xây dựng Ant?
- 14. làm cách nào để chỉ lấy tên tệp mà không có Đường dẫn Tệp?
- 15. đường dẫn tệp trong hdfs
- 16. Làm cách nào để loại trừ tệp khỏi đường dẫn tham chiếu trong Ant?
- 17. Làm cách nào để tìm đường dẫn đến tệp trong gói ứng dụng (NSBundle) bằng C?
- 18. Làm cách nào để mở tệp có đường dẫn tương đối trong Linux?
- 19. Làm cách nào để lấy đường dẫn tuyệt đối của tệp đầu vào trong R
- 20. Làm cách nào để đặt đường dẫn đến tệp DLL trong Visual Studio?
- 21. Làm cách nào để nhập các tệp .less với nội suy chuỗi trong đường dẫn?
- 22. Cách lấy tệp trong đường dẫn tương đối trong C#
- 23. Làm cách nào để tạo một tên đường dẫn tham gia an toàn bằng ruby?
- 24. Đường dẫn để tạo mô phỏng
- 25. Làm cách nào để chuyển đổi đường dẫn đầy đủ sang đường dẫn tương đối bằng cách sử dụng perl?
- 26. đường dẫn tệp tương đối trong perl
- 27. Làm thế nào để chạy một đường dẫn/đường dẫn C# thực thi kịch bản PowerShell?
- 28. Làm thế nào để vẽ đường dẫn này trong WPF?
- 29. Cách lấy đường dẫn tệp từ URI?
- 30. Đặt biến đường dẫn với dấu cách trong đường dẫn trong tệp .cmd của Windows hoặc tệp lô
Bạn đã thử trên Windows chưa? –
@Atom Tôi không sở hữu máy Windows. [Russ Cox nói Go xử lý '/' làm dấu phân tách đường dẫn trên tất cả các nền tảng] (http://groups.google.com/group/golang-nuts/browse_thread/thread/5527660c2d860ca3), điều này dường như đủ tốt đối với tôi. – Jjed
Russ đưa ra nhận xét đó vào ngày 2010-01-09. Đã có một số thay đổi đối với việc xử lý đường dẫn kể từ đó: xem http://golang.org/doc/devel/weekly.html#2011-03-07 –