2014-09-25 17 views
9

Tôi đang cố gắng đọc một số tệp từ dự án Scala của mình và nếu tôi sử dụng: java.io.File(".").getCanonicalPath() Tôi thấy thư mục hiện tại của tôi cách xa chúng (chính xác nơi tôi đã cài đặt Eclipse Scala). Vì vậy, làm thế nào tôi có thể thay đổi thư mục hiện tại vào thư mục gốc của dự án của tôi, hoặc nhận được đường dẫn đến dự án của tôi? Tôi thực sự không muốn có một đường dẫn tuyệt đối đến các tập tin đầu vào của tôi.Làm thế nào tôi có thể nhận được đường dẫn dự án tại Scala?

val PATH = raw"E:\lang\scala\progfun\src\examples\" 
    def printFileContents(filename: String) { 
    try { 
     println("\n" + PATH + filename) 
     io.Source.fromFile(PATH + filename).getLines.foreach(println) 
    } catch { 
     case _:Throwable => println("filename " + filename + " not found") 
    } 
    } 

    val filenames = List("random.txt", "a.txt", "b.txt", "c.txt") 
    filenames foreach printFileContents 

Trả lời

11
  1. Thêm tập tin của bạn để src/main/resources/<packageName> nơi <packageName> là gói lớp học của bạn.
  2. Thay đổi dòng val PATH = getClass.getResource("").getPath
+0

Vâng, trong trường hợp của tôi (trên Windows 8) đường dẫn được trả lại là /bin//đó chỉ là những gì tôi muốn. Cảm ơn! –

0

workaround khác là đưa đường dẫn mà bạn cần trong một biến môi trường người dùng, và gọi nó với sys.env (trả ngoại lệ nếu thất bại) hoặc System.getenv (trả về null nếu thất bại), ví dụ val PATH = sys.env("ScalaProjectPath") nhưng vấn đề là nếu bạn di chuyển dự án, bạn phải cập nhật biến mà tôi không muốn.

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