2012-04-26 78 views
6

Tôi chỉ đọc một số cuốn sách java và làm cho một số chương trình nhỏ cho thực tế, tôi đã tạo ra một mã nhỏ để có được thông tin về con đường tôi bước vào, và mã này là:Sự khác nhau giữa C: và C:/

String path = JOptionPane.showInputDialog("Enter Path to analyze"); 

File file = new File(path); 

if (file.exists()) 
{ 
    String result = ""; 
    if (file.isDirectory()) 
    { 
     result += "Path is directory\n "; 
     String [] resList = file.list(); 

     for (String s : resList) 
     { 
      result += s + ", "; 
     } 
    } 
    if (file.isFile()) 
    { 
     result += "Path is a file\n"; 
    } 

    JOptionPane.showMessageDialog(null, result); 

Bây giờ trong cuộc đối thoại đầu vào, khi tôi nhập C:, kết quả là build, build.xml, manifest.mf, nbproject, src, nhưng khi tôi nhập C: /, nó cho thấy danh sách đầy đủ các thư mục và tập tin trong C.

và kỳ lạ nó không xảy ra với D ổ đĩa và ổ đĩa khác (tức là kết quả là tương tự cho D:/và D :), những gì đang xảy ra xin vui lòng giải thích?

Cập nhật Tương tự xảy ra trong WPF bằng C#!

+5

Hehe, Windows vui nhộn :) –

+0

Kết quả mong muốn là gì? Đảm bảo hoặc xóa '/' khỏi đường dẫn của bạn, dựa trên kết quả bạn thực sự muốn. –

+0

Không có kết quả mong muốn, tôi chỉ viết mã để thực hành – SpeedBirdNine

Trả lời

9

C: có nghĩa là "bất kỳ thư mục nào hiện được chọn trên ổ đĩa C:". Trong trường hợp của bạn, đó có thể là thư mục mà ứng dụng của bạn đang chạy.

D: giống với D:/ trong trường hợp của bạn vì thư mục gốc thư mục làm việc hiện tại ở D:.

+2

Windows chắc chắn theo dõi CWD trên mọi ổ đĩa một cách riêng biệt, và thêm vào đó theo dõi ổ đĩa làm việc hiện tại. Sự kết hợp của hai thứ đó là những gì bạn biết là CWD trên * nix. –

+0

@Marko: Có, tôi chỉ cần kiểm tra trong một 'cmd.exe' và nhận thấy. Cảm ơn! –

+0

Có, nó thực sự là thư mục hiện tại dự án đang chạy từ vì kết quả trong trường hợp của C: là chính xác các tập tin và thư mục trong thư mục dự án! Một nhận xét cho biết hành vi này không thể được lặp lại trên Windows 7 (nhận xét đó có thể đã bị xóa), vì vậy có lẽ nó chỉ dành riêng cho Windows Vista. Chưa kiểm tra trên bất kỳ phiên bản Windows nào khác. – SpeedBirdNine

3

Đây không thực sự là một câu hỏi java, nhưng là một câu hỏi về cửa sổ/dos.

Giải thích đi xuống lệnh dos cũ để chuyển đổi ổ đĩa.

Nhập một ký tự ổ đĩa theo sau dấu hai chấm là lệnh thay đổi ổ đĩa trong dos, do đó 'lệnh' C: không làm gì vì thư mục hoạt động của bạn đã có trên ổ C. 'Thư mục' được trả về bởi giao diện gốc cho JRE giống như khi bạn sử dụng đường dẫn "", tức là thư mục làm việc của bạn.

Mặt khác, thêm dấu gạch chéo và đó là một đường dẫn thích hợp, vào thư mục gốc của ổ C, do đó JRE của bạn được cung cấp thư mục này theo giao diện gốc.

Nếu bạn đi tới lệnh dos (windows> run> cmd) và nhập C:, bạn sẽ thấy rằng nó chấp nhận lệnh nhưng không thay đổi thư mục, trừ khi bạn đang ở trên một ổ đĩa khác tại thời điểm đó.

hy vọng sẽ hữu ích.

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