import com.kms.katalon.core.configuration.RunConfiguration as RunConfiguration
//sets SystemDownLoadFolder
def SystemDownLoadFolder = (System.getProperty('user.home') + '/Downloads/')
SystemDownLoadFolder = SystemDownLoadFolder.replace('/', '\\')
println('SystemDownLoadFolder: ' + SystemDownLoadFolder)
//sets KatalonDataFolder
def KatalonDataFolder = RunConfiguration.getProjectDir() + '/Data Files/'
KatalonDataFolder = KatalonDataFolder.replace('/', '\\')
println("KatalonDataFolder: " + KatalonDataFolder)
//sets KatalonDataFolder path for jpegFile.jpg
def jpegFile = RunConfiguration.getProjectDir() + '/Data Files/jpegFile.jpg'
jpegFile = jpegFile.replace('/', '\\')
println("jpegFile: " + jpegFile)
//sets KatalonDataFolder path for textFile.txt
def textFile = RunConfiguration.getProjectDir() + '/Data Files/textFile.txt'
textFile = textFile.replace('/', '\\')
println("textFile: " + textFile)
//sets KatalonDataFolder path for pdfFile.pdf
def pdfFile = RunConfiguration.getProjectDir() + '/Data Files/pdfFile.pdf'
pdfFile = pdfFile.replace('/', '\\')
println("pdfFile: " + pdfFile)
Or you can use this (originally posted by @kazurayam):
Result: dataFilesDir: C:\Users\JohnDoe\Katalon Studio\MyTestProject\Data Files\test.jpg
import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.Paths
import com.kms.katalon.core.configuration.RunConfiguration
def projectDir = RunConfiguration.getProjectDir()
Path projectPath = Paths.get(projectDir)
Path dataFilesPath = projectPath.resolve('Data Files').resolve('test.jpg')
File dataFilesDir = dataFilesPath.toFile()
println("dataFilesDir: " + dataFilesDir)
1 Like
The following line is not good enough
Change this to the following
Path dataFilesPath = projectPath.resolve('Data Files').resolve('test.jpg')
You should avoid writing \\
and /
as much as possible. The File.separator is OS dependent, that harms the portability of your code.
1 Like
The title was ??? for me.
How to set relative path for SystemDownFolder and KatalonDataFolder
I renamed it to
Finding userâs âDownloadsâ folder & Katalon projectâs âData Filesâ folder relative to the project folder
1 Like
You do not have to convert a Path to a File in order to println it.
import java.nio.file.Path
import java.nio.file.Paths
import com.kms.katalon.core.configuration.RunConfiguration
def projectDir = RunConfiguration.getProjectDir()
Path projectPath = Paths.get(projectDir)
Path image = projectPath.resolve('Data Files').resolve('test.jpg')
println "image: " + image.toString()
In fact, I rarely use java.io.File
class in my code. I always prefer java.nio.file.Path
, which was released lately in Java 7. I use java.io.File
class only when a decades-old external API (originally developed before Java 7) requires java.io.File
and does not know java.nio.file.Path
, for example org.apache.commons.FileUtil
1 Like
After your feed-back, Iâve updated my posting as follows:
Finding userâs âDownloadsâ folder & Katalon projectâs âData Filesâ folder relative to the project folder
import java.nio.file.Path
import java.nio.file.Paths
import com.kms.katalon.core.configuration.RunConfiguration
//sets KatalonDataFolder
def projectDir = RunConfiguration.getProjectDir()
Path projectPath = Paths.get(projectDir)
Path imageFile1 = projectPath.resolve('Data Files').resolve('test.jpg')
println("projectPath: " + projectPath)
println "imageFile1: " + imageFile1.toString()
//sets userDownloadPath
def userDownloadDir = (System.getProperty('user.home'))
Path userDownloadPath = Paths.get(userDownloadDir)
Path imageFile2 = userDownloadPath.resolve('Downloads').resolve('test.jpg')
println("userDownloadPath : " + userDownloadPath )
println "imageFile2: " + imageFile2.toString()