Здесь я передаю переменную skipfolders на входе, если skipfolders истинно, тогда он печатает все файлы из родительского пути и пропускает подпапки. в противном случае он возвращает все файлы из всех папок, включая подпапки. Здесь я написал условия if-else. Когда я выполняю этот код в FileMaker он выполняется без ошибок и отображает результат, но условия if-else здесь не работают.
Условия if-else здесь не работают. Он печатает все файлы с FTP, включая подпапки. Условие skipfolders не работает. при этом возврате allFiles.join ('\ n') + '\ n' + allFolderFiles.join ('\ n') + '\ n' печатает напрямую, и условие пропуска папок не работает. Пожалуйста, помогите, как правильно использовать условия if-else в fileMaker groovy.
start()
def start(){
boolean skipfolders = false
def store;
def ftpClient = new FTPClient()
ftpClient.connect(server)
// println(ftpClient.replyString)
ftpClient.login(user,pass)
ftpClient.enterLocalPassiveMode()
FTPFile[] fileslist = ftpClient.listFiles("/")
FTPFile[] folderfileslist = ftpClient.listFiles("/sample")
if (skipfolders == false){
def allFiles = [];
for(int i=0; i<fileslist.length; i++){
String file_name = fileslist[i].getName()
String file_timestamp = fileslist[i].getTimestamp().getTime()
String s = '|' + file_name+ '|' + '/' +file_name+'|' +file_timestamp
allFiles << s
}
def allFolderFiles = [];
for(int i=0; i<folderfileslist.length; i++){
String folderfile_name = folderfileslist[i].getName()
String folderfile_timestamp = folderfileslist[i].getTimestamp().getTime()
String s1 = '|' +folderfile_name+ '|' + '/sample' +'|'+folderfile_name+'|' +folderfile_timestamp
allFolderFiles << s1
}
ftpClient.disconnect()
return allFiles.join('\n') + '\n'+ allFolderFiles.join('\n')+ '\n'
}
else{
def allFiles = [];
for(int i=0; i<fileslist.length; i++){
String file_name = fileslist[i].getName()
String file_timestamp = fileslist[i].getTimestamp().getTime()
String s = '|' + file_name+ '|' + '/' +file_name+'|' +file_timestamp
allFiles << s
}
ftpClient.disconnect()
return allFiles.enter code herejoin('\n')
}
}
enter code here
if anybody having idea please let me know thanks.





Способ сравнения предпочтительнее для строкового значения, для логического значения вы также можете сделать следующее в своем коде, если ... другое открытие и закрытие не кажется совпадающим, проверьте это.
boolean skipfolders = false
if (!skipfolders){ // this directly checks the true and false conditions
// do your stuff here on skipfolders = false
}else {
// do your stuff here on skipfolders = true
}
Если я правильно понимаю вопрос, вы хотите установить переменную skipfolders в качестве параметра.
Как это вы заявили:
boolean skipfolders = false;
Таким образом, else никогда не достигается, как указано пользователем daggett в комментарии к вопросу.
Если вместо этого вы сделаете что-то вроде этого:
start(true) or start(false)
def start(boolean input){
boolean skipfolders = input;
...
}
Затем вы можете перейти к оператору else в зависимости от вашего ввода.
Переменной skipfolders присвоено значение false, и она никогда не менялась. Итак, ваш код и «если» работают нормально. Пожалуйста, подробно опишите ожидаемую логику.