Làm thế nào để có được một phần mở rộng tập tin?

Trong hướng dẫn nhanh này, chúng tôi sẽ chỉ cho bạn cách lấy phần mở rộng tệp theo lập trình trong Java. Chúng tôi sẽ tập trung vào ba cách tiếp cận chính cho vấn đề

Trong các triển khai của chúng tôi, các ký tự sau từ cuối cùng '. ' sẽ được trả lại

Do đó, như một ví dụ nhanh, nếu tên tệp của chúng tôi là jarvis. txt thì nó sẽ trả về Chuỗi “txt” là phần mở rộng của tệp

2. Lấy phần mở rộng tệp

Đối với mỗi phương pháp, chúng ta sẽ tìm hiểu cách triển khai và theo dõi những gì xảy ra trong hai trường hợp đặc biệt

  • khi tên tệp không có phần mở rộng, chẳng hạn như tệp makefile
  • và nếu tên tệp chỉ bao gồm phần mở rộng, chẳng hạn như. gitignore hoặc. DS_Cửa hàng

2. 1. Phương pháp xử lý chuỗi đơn giản

Với phương pháp này, chúng tôi sẽ sử dụng phương pháp xử lý Chuỗi đơn giản để tìm tiện ích mở rộng

public Optional<String> getExtensionByStringHandling(String filename) {
    return Optional.ofNullable(filename)
      .filter(f -> f.contains("."))
      .map(f -> f.substring(filename.lastIndexOf(".") + 1));
}

Phương pháp này sẽ kiểm tra dấu chấm ‘. ' xuất hiện trong tên tệp đã cho

Nếu nó tồn tại, thì nó sẽ tìm vị trí cuối cùng của dấu chấm ‘. ' và trả lại các ký tự sau đó, các ký tự sau dấu chấm cuối cùng '. ' được gọi là phần mở rộng tệp

Trường hợp đặc biệt

  1. Không có phần mở rộng - phương thức này sẽ trả về một Chuỗi trống
  2. Chỉ phần mở rộng – phương thức này sẽ trả về Chuỗi sau dấu chấm, e. g. “gitignore”

2. 2. Tên tệpUtils. getExtension từ Apache Commons IO

Trong cách tiếp cận thứ hai, chúng ta sẽ tìm phần mở rộng bằng cách sử dụng một lớp tiện ích được cung cấp bởi thư viện Apache Commons IO

public String getExtensionByApacheCommonLib(String filename) {
    return FilenameUtils.getExtension(filename);
}

Ở đây, thay vì tên tệp, chúng ta cũng có thể chỉ định đường dẫn đầy đủ đến tệp e. g. "C. /baeldung/com/demo. java“

Phương thức getExtension(String) sẽ kiểm tra xem tên tệp đã cho có trống hay không

Nếu tên tệp trống hoặc rỗng, getExtension(String filename) sẽ trả về thể hiện mà nó được cung cấp. Mặt khác, nó trả về phần mở rộng của tên tệp

Để làm điều này, nó sử dụng phương thức indexOfExtension(String), lần lượt, sử dụng lastIndexof(char) để tìm lần xuất hiện cuối cùng của '. '. Cả hai phương thức này đều được cung cấp bởi FilenameUtils

Phương pháp này cũng kiểm tra xem không có dấu tách thư mục sau dấu chấm cuối cùng hay không bằng cách sử dụng một phương thức khác indexOfLastSeparator(String), phương thức này sẽ xử lý một tệp ở định dạng Unix hoặc Windows

Trường hợp đặc biệt

  1. Không có phần mở rộng – phương thức này sẽ trả về một chuỗi rỗng
  2. Chỉ phần mở rộng – phương thức này sẽ trả về Chuỗi sau dấu chấm, e. g. “gitignore”

2. 3. Sử dụng thư viện ổi

Trong cách tiếp cận cuối cùng này, chúng ta sẽ sử dụng thư viện Guava để tìm tiện ích mở rộng

Để thêm thư viện Guava, chúng ta có thể thêm phần phụ thuộc sau vào pom của mình. xml

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>

Đối với sự phụ thuộc mới nhất, chúng tôi có thể kiểm tra

Sau khi thêm thư viện, chúng ta chỉ cần sử dụng phương thức getFileExtension của nó

public String getExtensionByGuava(String filename) {
    return Files.getFileExtension(filename);
}

Phương thức getFileExtension(String) trước tiên sẽ kiểm tra xem tên tệp đã cho có trống không

Nếu tên tệp không trống, thì nó sẽ tạo một thể hiện Tệp bằng cách chuyển đổi tên tệp đã cho thành một tên đường dẫn trừu tượng và gọi phương thức getName() của Tệp trên nó, phương thức này sẽ trả về tên của tệp được biểu thị bằng tên đường dẫn trừu tượng này hoặc

Dựa trên giá trị trả về này, nó tìm nạp chỉ mục của lần xuất hiện cuối cùng của '. ' bằng cách sử dụng phương thức sẵn có của lớp String lastIndexOf(char)

Trường hợp đặc biệt

  1. Không có phần mở rộng - phương thức này sẽ trả về một Chuỗi trống
  2. Chỉ phần mở rộng – phương thức này sẽ trả về Chuỗi sau dấu chấm, e. g. “gitignore”

3. Phần kết luận

Khi chọn giữa Apache Commons và Guava, trong khi cả hai thư viện đều có một số tính năng chung và chúng cũng có chức năng không có trong thư viện thay thế

Điều này có nghĩa là nếu chức năng nào đó được yêu cầu, hãy chọn chức năng có chức năng đó. Mặt khác, nếu cần nhiều kịch bản tùy chỉnh hơn, hãy chọn một kịch bản thực hiện hầu hết những gì bạn cần và thoải mái kết hợp nó với triển khai của riêng bạn để có được kết quả mong muốn

Hàm splittext() này tách chuỗi đường dẫn tệp thành tên tệp và phần mở rộng tệp thành một cặp gốc và phần mở rộng sao cho khi cả hai được thêm vào thì chúng ta có thể truy xuất lại đường dẫn tệp (file_name + extension = path). Chức năng này được ưu tiên sử dụng khi mô-đun hệ điều hành đã được sử dụng

Python3




public String getExtensionByApacheCommonLib(String filename) {
    return FilenameUtils.getExtension(filename);
}
7
public String getExtensionByApacheCommonLib(String filename) {
    return FilenameUtils.getExtension(filename);
}
8

public String getExtensionByApacheCommonLib(String filename) {
    return FilenameUtils.getExtension(filename);
}
9

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>
0

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>
1
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>
2
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>
3
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>
4
File Extension:  .txt
0

File Extension:  .txt
1
File Extension:  .txt
2

public String getExtensionByApacheCommonLib(String filename) {
    return FilenameUtils.getExtension(filename);
}
9

File Extension:  .txt
4

File Extension:  .txt
5
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>
2
File Extension:  .txt
7
File Extension:  .txt
8
File Extension:  .txt
9

public String getExtensionByApacheCommonLib(String filename) {
    return FilenameUtils.getExtension(filename);
}
70
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>
2
File Extension:  .txt
7
public String getExtensionByApacheCommonLib(String filename) {
    return FilenameUtils.getExtension(filename);
}
73
File Extension:  .txt
9

public String getExtensionByApacheCommonLib(String filename) {
    return FilenameUtils.getExtension(filename);
}
9

_______41____177____178

public String getExtensionByApacheCommonLib(String filename) {
    return FilenameUtils.getExtension(filename);
}
79

_______41____177____182

public String getExtensionByApacheCommonLib(String filename) {
    return FilenameUtils.getExtension(filename);
}
83

đầu ra

public String getExtensionByApacheCommonLib(String filename) {
    return FilenameUtils.getExtension(filename);
}
6

Phương pháp 2. Sử dụng mô-đun Pathlib

đường dẫn. Con đường(). phương thức hậu tố của mô-đun Pathlib có thể được sử dụng để trích xuất phần mở rộng của đường dẫn tệp. Phương pháp này được ưu tiên cho cách tiếp cận hướng đối tượng

Làm cách nào để tìm phần mở rộng của tệp?

Mở Trình khám phá tệp; . Nhấp vào tab Xem trong File Explorer. Nhấp vào hộp bên cạnh Phần mở rộng tên tệp để xem phần mở rộng tệp. Nhấp vào hộp bên cạnh Các mục ẩn để xem các tệp ẩn

Làm cách nào để thêm phần mở rộng tệp?

Bước 2. Nhấp chuột phải vào tên tệp và chọn Đổi tên (hoặc nhấp chuột trái và giữ nút trong một giây). Nhập phần mở rộng mới như vậy. Sau khi nhập tiện ích mở rộng mới, nhấn phím Enter (quay lại). Windows sẽ đưa ra cảnh báo rằng tệp có thể không hoạt động bình thường

Làm cách nào để có phần mở rộng tệp trong Java?

Chuỗi fileName = "Kiểm tra. java"; Phần mở rộng chuỗi = Tệp. getFileExtension(fileName); Và, Apache Commons IO cũng cung cấp lớp FilenameUtils cung cấp phương thức getExtension để lấy phần mở rộng của tệp.

Phần mở rộng tập tin được tìm thấy ở đâu?

Phần mở rộng tệp là một mã định danh gồm ba hoặc bốn chữ cái được tìm thấy ở cuối tên tệp và sau dấu chấm . Các phần mở rộng này cho bạn biết về các đặc điểm của tệp và cách sử dụng tệp.