2014-09-25 11 views
9

Sto provando a leggere alcuni file dal mio progetto Scala, e se uso: java.io.File(".").getCanonicalPath() trovo che la mia directory corrente è molto lontana da loro (esattamente dove ho installato Scala Eclipse). Quindi, come posso cambiare la directory corrente alla radice del mio progetto o ottenere il percorso del mio progetto? Non voglio davvero avere un percorso assoluto per i miei file di input.Come posso ottenere il percorso del progetto in 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 

risposta

11
  1. aggiungere i file al src/main/resources/<packageName> dove <packageName> è il pacchetto di classe.
  2. Modificare la linea val PATH = getClass.getResource("").getPath
+0

Bene, nel mio caso (su Windows 8) il percorso restituito è /bin//che è proprio quello che volevo. Grazie! –

0

Un'altra soluzione è quella di mettere il percorso è necessario in una variabile di ambiente utente, e chiamarlo con sys.env (restituisce un'eccezione se guasto) o System.getenv (restituisce null se guasto), ad esempio val PATH = sys.env("ScalaProjectPath") ma il problema è che se si sposta il progetto è necessario aggiornare la variabile, che non volevo.