2013-11-04 20 views
5

Tôi đang viết một plugin Jenkins và tôi đang sử dụng build.getWorkspace() để nhận đường dẫn đến không gian làm việc hiện tại. Vấn đề là điều này trả về một đối tượng FilePath.Làm cách nào tôi có thể chuyển đổi tệp FilePath thành tệp?

Làm cách nào tôi có thể chuyển đổi điều này thành đối tượng Tệp?

+0

@Downvoter Tôi không hiểu tại sao một số người chỉ -1 mà không nói lý do tại sao. Tôi nghĩ chúng ta nên nói với anh chàng/cô gái để đăng một số mã, yêu cầu những gì họ đã cố gắng cho đến nay, và như vậy. Chỉ cần cung cấp một số phản hồi để tất cả chúng ta có thể học được điều gì đó từ trải nghiệm này. – Morfic

+0

** Câu hỏi: ** tại sao bạn muốn một đối tượng 'File'? 'FilePath' thực sự là một API khá biểu cảm, và được xây dựng đặc biệt để xử lý các hoạt động tập tin từ xa. Nếu bạn thử truy cập vào không gian làm việc bằng cách sử dụng 'File' trên một tác nhân nô lệ từ xa, bạn sẽ" có một thời gian xấu ". –

Trả lời

7

Mặc dù tôi đã không cố gắng này, theo javadoc bạn có thể lấy URI từ mà sau đó bạn có thể tạo một tập tin: File myFile = new File(build.getWorkspace().toURI())

+0

Có. Có vẻ như đang làm việc. Cảm ơn. – daniels

+0

Nếu bạn cần đường dẫn dưới dạng chuỗi, hãy sử dụng 'build.workspace.getRemote()' để thay thế. – sschuberth

3

Vui lòng sử dụng các hành chức năng và gọi riêng FileCallable thực hiện của bạn nếu plugin của bạn nên làm việc cho chủ và nô lệ. Để biết thêm thông tin, hãy kiểm tra documentation, chapter "Using FilePath smartly" hoặc stackoverflow answer này.

Mã ví dụ (source):

void someMethod(FilePath file) { 
    // make 'file' a fresh empty directory. 
    file.act(new Freshen()); 
} 
// if 'file' is on a different node, this FileCallable will 
// be transferred to that node and executed there. 
private static final class Freshen implements FileCallable<Void> { 
    private static final long serialVersionUID = 1; 
    @Override public Void invoke(File f, VirtualChannel channel) { 
     // f and file represent the same thing 
     f.deleteContents(); 
     f.mkdirs(); 
     return null; 
    } 
} 
Các vấn đề liên quan