我有50个文件,每个文件大小为100MB。
每个文件在我的代码中都有一个类表示形式,例如:
public class FileRepresentation
{
private String path;
public FileRepresentation(String path)
{
this.path = path;
}
public String getPath()
{
return this.path;
}
}
出于明显的原因,我在循环访问时无法在内存中拥有50个对象(每个对象100MB)。
我有一个类,该类保存所有文件目录的路径,并且我想使此类可迭代,并且能够一次返回1个对象,这意味着来自Iterator(循环)的每个请求,创建一个新对象并返回它。
public class FilesClass
{
private String folderPath;
public FilesClass(String folderPath)
{
this.folderPath= folderPath;
}
//What I want to achieve:
public FileRepresentation getNextFile()
{
return new FileRepresentation("nextFile");
}
}
我曾考虑过要拥有一个计数器,并且每次迭代都只是创建一个新对象,但这似乎是错误的。 我该如何实现?有什么更好的方法吗?也许我弄错了,在循环中并不是所有的50个对象都在内存中?
谢谢。
编辑: 我最终做了建议的方法。
答案 0 :(得分:0)
我最终使用了循环程序的方法:
public class FileRepresentation
{
private String path;
public FileRepresentation(String path)
{
this.path = path;
}
public String getPath()
{
return this.path;
}
}
public class FilesClass
{
private List<File> files;
private int counter;
public FilesClass(List<File> files)
{
this.files = files;
this.counter = 0;
}
public FileRepresentation getNextFile()
{
FileRepresentation object = myOwnImplementationToConvertFileToObject(this.files.get(counter++));
return object;
}
}