2013-04-30 43 views

Trả lời

10

!Files.exists() lợi nhuận:

  • true nếu tập tin không tồn tại hoặc tồn tại của nó không thể được xác định
  • false nếu tập tin tồn tại

Files.notExists() lợi nhuận:

  • .210 nếu tập tin không tồn tại
  • false nếu tập tin tồn tại hoặc tồn tại của nó không thể được xác định
1

Từ Oracle docs của notExists.

Lưu ý rằng phương pháp này không phải là bổ sung cho phương pháp tồn tại. Trường hợp không thể xác định xem tệp có tồn tại hay không thì cả hai phương thức đều trả về false. ...

Làm nổi bật của tôi.

3

Như chúng ta thấy từ Files.exists kết quả trả về là:

TRUE if the file exists; 
FALSE if the file does not exist or its existence cannot be determined. 

Và từ Files.notExists kết quả trả về là:

TRUE if the file does not exist; 
FALSE if the file exists or its existence cannot be determined 

Vì vậy, nếu !Files.exists(path) trở TRUE có nghĩa là nó không tồn tại hoặc sự tồn tại không thể xác định (2 khả năng) và cho Files.notExists(path) trả lại TRUE có nghĩa là nó không tồn tại (chỉ 1 khả năng).

Kết luận !Files.exists(path) != Files.notExists(path) hoặc 2 possibilities not equals to 1 possibility (xem phần giải thích ở trên về các khả năng).

3

Tìm mã nguồn cho những khác biệt mà cả hai đều thực hiện cùng một điều chính xác với 1 khác biệt lớn. Phương pháp notExist(...) có thêm ngoại lệ để bị bắt.

Exist:

public static boolean exists(Path path, LinkOption... options) { 
    try { 
     if (followLinks(options)) { 
      provider(path).checkAccess(path); 
     } else { 
      // attempt to read attributes without following links 
      readAttributes(path, BasicFileAttributes.class, 
          LinkOption.NOFOLLOW_LINKS); 
     } 
     // file exists 
     return true; 
    } catch (IOException x) { 
     // does not exist or unable to determine if file exists 
     return false; 
    } 

} 

Not Exist:

public static boolean notExists(Path path, LinkOption... options) { 
    try { 
     if (followLinks(options)) { 
      provider(path).checkAccess(path); 
     } else { 
      // attempt to read attributes without following links 
      readAttributes(path, BasicFileAttributes.class, 
          LinkOption.NOFOLLOW_LINKS); 
     } 
     // file exists 
     return false; 
    } catch (NoSuchFileException x) { 
     // file confirmed not to exist 
     return true; 
    } catch (IOException x) { 
     return false; 
    } 
} 

Kết quả là sự khác biệt như sau:

  • !exists(...) trả về nội dung tập tin không tồn tại nếu một IOException là được ném khi cố truy xuất tệp.

  • notExists(...) trả về nội dung tập tin không tồn tại bằng cách đảm bảo các cụ IOException subexception NoSuchFileFound được ném và rằng nó không phải là bất kỳ subexception khác trên IOException gây ra kết quả không tìm thấy

+0

Xin chào, tôi là nhà phát triển PHP và thực hiện một số dự án trong Java. Vì vậy, không có cách đơn giản để xác định nếu thư mục tồn tại và chắc chắn là 100%. Tôi đang sử dụng JDK 6. Tôi nghĩ Java là ngôn ngữ trưởng thành ... – BojanT

0

Bạn chỉ có thể xác định đường dẫn tuyệt đối, nếu thư mục/thư mục không thoát, nó sẽ tạo ra các thư mục/thư mục.

private void createDirectoryIfNeeded(String directoryName) 
{ 
File theDir = new File(directoryName); 
if (!theDir.exists()) 
    theDir.mkdirs(); 
} 
Các vấn đề liên quan