我在FileMaker中运行的这个groovy代码但是循环只返回一个值我怎么能返回所有fileslist。 在FileMaker中,println语句不起作用,只返回语句,所以如何返回所有值 如下面的循环显示。
JOIN
此循环只返回FileMaker中唯一的第一个值
start()
def start(){
def store;
def ftpClient = new FTPClient()
ftpClient.connect(server)
// println(ftpClient.replyString)
ftpClient.login(user,pass)
ftpClient.enterLocalPassiveMode()
FTPFile[] fileslist = ftpClient.listFiles("/")
如何返回所有值?
答案 0 :(得分:1)
将其放入列表并返回。
start()
def start(){
def store;
def ftpClient = new FTPClient()
ftpClient.connect(server)
// println(ftpClient.replyString)
ftpClient.login(user,pass)
ftpClient.enterLocalPassiveMode()
FTPFile[] fileslist = ftpClient.listFiles("/")
// This loop just returns the only first value in FileMaker
List<String> mylist = new List<String>();
for(int i=0; i<fileslist.length; i++){
String file_name = fileslist[i].getName()
String file_timestamp = fileslist[i].getTimestamp().getTime()
myList.add('|' + file_name+ '|' + '/' +file_name+'|' + '{' +file_timestamp+ '}');
}
ftpClient.disconnect()
return myList;
}
然后,您可以轻松轻松地访问所有值,并且您可以单独访问它们,随意使用它。
答案 1 :(得分:0)
如果要作为长字符串返回,则需要在循环中创建字符串列表,然后在循环之后连接并返回它们。
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.join('\n');
答案 2 :(得分:0)
使用lambda表达式。简短而简单。
List<String> allFiles = Arrays.stream(filelist)
.map(f -> String.format(“| %s | /%s | { %s }”, f.getName(), f.getName(), f.getTimestamp().getTime()))
.collect(Collectors.toList());