开销与代码速度(java.io.File数组与java.lang.String数组)

wpr*_*ton 6 java arrays string for-loop file

只是试图理清我在这里的一个小分类.

目前,我正在开发一个涉及将文件列表收集到内存中的应用程序,以便删除.现在,在这一点上,我认为java.io.File数组可能会占用太多内存,因为此上下文中的Files列表可能包含数百个可能的条目.

我没有使用File对象列表吃掉过多的内存,而是认为收集文件名列表并将它们存储为java.lang.String对内存来说会更便宜.现在,这是我的问题:要记住这些文件要删除,哪些文件会更便宜:

  1. 存储一个File对象而不是String对象,并调用.delete(); 循环中的每一个(使用太多的内存).
  2. 使用文件名存储String对象数组,但是对于循环的每次迭代,使用文件名列表创建一个新的File对象,并调用.delete(); 在该文件上(这意味着每次循环迭代时,都会创建并销毁一个新的File对象 - 可能使用的处理器功率太大).

我想尽可能快地使程序,所以任何一种方法都有其优点,我只想看看哪些方法的开销最小.提前致谢!

mat*_*t b 14

java.io.File代表对文件系统中的一个条目中的文件名信息/元数据,它不包含该文件的内容.

换句话说,代码new File("somelarge.txt")不会将somelarge.txt文件加载到内存中.

每个File对象包含的唯一真实数据是String path文件(以及a transient int prefixLength) - 认为File该类只是一个String path知道如何调用所有文件系统操作的包装器.

除了其他一些要求之外,这里的最佳选择是最容易阅读的代码并最好地传达您的意图.

  • +1:一个`File`包含一个`String`和一个`int`,所以内存占用不应该是个问题.为了便于阅读. (2认同)