2010-05-22 38 views
5

Vì vậy, tôi đang cố tạo đường dẫn trong C#. Tôi sử dụng Environment.Machinename và lưu trữ nó một tên máy chủ biến. Sau đó, tôi tạo một biến chuỗi và có một số phần mở rộng đường dẫn khác trong đó. Đây là mã của tôi cho đến thời điểm này:Tạo đường dẫn tệp trong C#

string serverName = Environment.MachineName; 
string folderName = "\\AlarmLogger"; 

Không có vấn đề gì tôi không thể có được chỉ một dấu gạch chéo ngược trước AlarmLogger. Bất kỳ ý tưởng làm thế nào tôi có thể chỉ định một con đường trong C#?

Chỉnh sửa: Tôi tự hỏi nếu mã của tôi dường như không muốn dán chính xác. Dù sao khi tôi dán nó tôi chỉ thấy một dấu gạch chéo ngược nhưng mã của tôi có hai. Vì chuỗi ký tự thoát. Nhưng một cái gì đó như

string test = @"\\" + serverName + folderName 

dường như không muốn làm việc cho tôi.

+0

Khi nhập mã, bạn cần chọn mã đó và sử dụng biểu tượng mã (101010) để giữ nguyên định dạng gốc. –

+1

Nó sẽ giúp ích nếu bạn đưa ra một ví dụ về những gì bạn muốn kết quả cuối cùng trông như thế nào. –

Trả lời

20

Sử dụng Path.Combine(serverName, folderName). Path.Combine luôn luôn là một giải pháp tốt hơn so với concating nó trên của riêng bạn.

+0

Tôi sẽ chụp ảnh đó. Cảm ơn bạn. – Jason

+1

Bạn sẽ muốn loại bỏ các dấu gạch chéo từ folderName cũng như: string folderName = "AlarmLogger"; – s1mm0t

1

Không rõ bạn đang cố gắng làm gì hoặc điều gì đang xảy ra.

Nếu bạn gặp khó khăn trong đó có những dấu xồ nguợc trong chuỗi của bạn, họ cần phải được thoát với một dấu chéo ngược thêm:

string twoBackslashes = "\\\\"; 

Hoặc bạn có thể làm điều đó như thế này:

string twoBackslashes = @"\\"; 

Nếu bạn là cố gắng điều khiển đường dẫn, nhìn vào lớp System.IO.Path. Cụ thể, Path.Combine có thể hữu ích.

2

Bạn không thể sử dụng Path.Combine cho điều này như được đề xuất. Lý do là nó bỏ qua các biến tĩnh nếu mục nhập đầu tiên là tĩnh, ví dụ: Environment.MachineName (xem tài liệu MSDN để biết chi tiết). Nếu bạn sử dụng Path.Combine (servername, foldername), bạn sẽ nhận được "\ AlarmLogger". Thêm vào đó, nó phân tích dấu gạch chéo kép thành dấu gạch chéo đơn.

Điều đó đang được nói, bạn có thể làm một cái gì đó như sau (trong số những cách khác):

string serverName = Environment.MachineName; 
string folderName = "\\\\AlarmLogger"; //this gives alarmlogger two leading slashes 
string test = @"\\" + serverName + folderName.Substring(1,folderName.Length-1); //this removes one of the two leading slashes 

Bạn có thể sử dụng một loạt các cách để loại bỏ các dấu gạch chéo hàng đầu bên cạnh chuỗi con.

Các vấn đề liên quan