2015-05-26 12 views
4

使用Java Files API時,我遇到了(Linux)Jenkins服務器上的問題。Jenkins上的Java文件行爲

集成測試失敗,它使用JUnit TemporaryFolder。測試執行以下代碼:

Path expectedPath = tmpFolder.getRoot().toPath().resolve("folder1/folder2"); 

// create files 

assertTrue(Files.exists(expectedPath.resolve("newFile1.txt"))); 

的本地測試通過,我在日誌中詹金斯看到運行expectedPath被成功創建,但什麼讓我困惑的是「路徑」我的新文件:

/tmp/junit0219318729037123/folder1\/folder2/newFile1.txt 

爲什麼\/被引入?這是Linux上文件的一些怪癖,還是我的tmpFolder有問題?

+0

你能告訴我們你如何創建新的文件?它看起來像'newFile1.txt'位於名爲'folder1/folder2'的文件夾中,而不在'folder2'(位於'folder1') – NiziL

+0

當我創建文件時,我使用'Files.createDirectories'來創建folder1和然後我使用'Files.write(myFilePath,someBytes,StandardOpenOption.CREATE_NEW,StandardOpenOption.WRITE'。 – Rossiar

+0

顯然有一個問題是編程文件或文件夾的創建。您能否爲我們提供一個完整的代碼片段來創建文件? –

回答

0

如何:

Path expectedPath = tmpFolder.getRoot().toPath().resolve("folder1").resolve("folder2"); 
+1

請您再解釋一下嗎? – durron597

+0

我試過了,得到了和上面相同的結果 – Rossiar

+0

Path對象允許你建立一個平臺無關的目錄結構,你不需要明確地使用文件分隔符將解析方法與路徑上的字符串相結合將會將該字符串附加到路徑。您可以查看[this](https://docs.oracle.com/javase/7/docs/api/java/nio/file/Path.html#resolve%28java.nio.file.Path%29)頁面以獲取更多信息信息。 – Chadi