要从java中的文件类型数组创建字符串类型数组吗
我有一个文件类型数组,它被一个接一个地转换成字符串类型。现在我想制作一个包含所有转换字符串的数组。我不知道该怎么做,被困在这里要从java中的文件类型数组创建字符串类型数组吗,java,Java,我有一个文件类型数组,它被一个接一个地转换成字符串类型。现在我想制作一个包含所有转换字符串的数组。我不知道该怎么做,被困在这里 FTPFile[] files = client.list(); for (FTPFile file : files) { System.out.println(file.getName()); //How to make an array of file.getName 首先,这不是一个很好的增强for循环应用程序,它屏蔽了迭代
FTPFile[] files = client.list();
for (FTPFile file : files) {
System.out.println(file.getName());
//How to make an array of file.getName
首先,这不是一个很好的增强for循环应用程序,它屏蔽了迭代器变量。其次,我不确定您使用的是哪个
FTPFile
实现,但假设您使用的是
String[]strings=新字符串[files.length];
对于(int i=0;i
如下所示
FTPFile[] files = client.list();
int size = files.length;
int i =0;
String a []=new String[size];
for (FTPFile file : files) {
System.out.println(file.getName());
a[i] = file.getName();
i++;
}
只需声明一个
字符串的数组
,该数组将保存文件名,并根据索引更改for
循环,以便为文件名数组的每个元素分配一个值
FTPFile[]files=client.list();
String[]filename=新字符串[files.length];
对于(int i=0;i
使用Java 8,您可以执行以下操作:
String[] strings = Arrays.stream(files)
.map(FTPFile::getName)
.toArray(String[]::new);
一点解释:
Arrays.stream(files)
返回有关文件元素的流数组
.map(FTPFile::getName)
是从类型FTPFile
到类型String
(返回类型getName
和所需的目标类型)的映射。它是通过方法引用(双冒号:
)作为lambda表达式的缩写形式完成的:element->element.getName()
.toArray(字符串[]:新建)
创建一个新字符串[],并将流的所有元素存储在其中,再次使用方法引用(长格式为:size->newstring[size]
有关流的更多信息,请参见
String[] ss = Arrays.stream(files).
map(f -> f.getName()).
toArray(String[]::new);
String[]
没有方法add()
。这是一个数组,不是列表。
。仍然存在一个问题。i
声明在哪里,为什么允许它泄漏到循环范围之外?@hexafraction Thanx,但我需要更多了解泄漏部分,可能对其他人也有用。在这段代码中,循环结束后,i
仍然可以访问。当您在中声明i
for(int i=0;…)
,则它仅在循环本身执行时在堆栈上,并且您不会冒意外混淆的风险,并在循环结束后使用它。我可以工作,但当在循环之外的其他地方使用[]时,它的给定值为null,第0位的第一个除外
String[] ss = Arrays.stream(files).
map(f -> f.getName()).
toArray(String[]::new);