怎么快速查找某一个目录上指定格式的一个文件
如何快速查找某一个目录下指定格式的一个文件
[/size][size=large]
以下代码实现了在某个文件目录下快速查找某一个文件:
它的适用情况: 一个目录底下有多个文件(不含文件夹),且某种格式的文件只有一个
一般的方法是遍历整个文件夹,直到找到某个特定的文件,我采用的思路大体也一样,只不过稍微做了一些修改,采用双向遍历,这样速度比原来快了不少,要是有更好的方式,希望大牛们多指点。
问题原型: 在某一个目录下存在很多XML格式的文件和一个XDB格式的文件,每发送完一个XML文件就要发送相应的一个同名的XDB文件,所有XML的文件结构都一样。这个xdb文件就相当于这个XML的描述文件。
好了 ,废话不说了, 下面请看代码:
[/size][size=large]
以下代码实现了在某个文件目录下快速查找某一个文件:
它的适用情况: 一个目录底下有多个文件(不含文件夹),且某种格式的文件只有一个
一般的方法是遍历整个文件夹,直到找到某个特定的文件,我采用的思路大体也一样,只不过稍微做了一些修改,采用双向遍历,这样速度比原来快了不少,要是有更好的方式,希望大牛们多指点。
问题原型: 在某一个目录下存在很多XML格式的文件和一个XDB格式的文件,每发送完一个XML文件就要发送相应的一个同名的XDB文件,所有XML的文件结构都一样。这个xdb文件就相当于这个XML的描述文件。
好了 ,废话不说了, 下面请看代码:
// 获得parentDir目录下所有的文件 File[] strList = parentDir.listFiles(); // 初始化FTP服务器并打开链接 try { // 记录xdb的文件路径 File xdbFile = null; // 遍历文件目录并开始向FTP发送文件 for (int i = 0; i < strList.length; i++) { String fileName = strList[i].getName(); String newFileName = null; // 判断当前文件是否是XML格式的数据文件 if(fileName.toLowerCase().endsWith(".xml")){ 向FTP服务器发送XML文件 // 获得XML文件的名称,将xdb文件设置成与XML同名的文件 String[] xmlName = fileName.split("\\."); newFileName = xmlName[0] + ".xdb"; }else if (fileName.toLowerCase().endsWith(".xdb")){ xdbFile = strList[i]; continue; } /** * 如果当前文件不是xdb格式的数据文件,则遍历文件目录中剩余的文件,找到xdb格式的数据文件 * 在遍历目录中剩余的文件时采用双向遍历,提高查找文件的速度 */ if (null == xdbFile) { int n = i; for (int j = strList.length-1-n ; j > n ; j--) { if ( strList[j].getName().toLowerCase().endsWith(".xdb")){ xdbFile = strList[j]; break; } else if (strList[n+1].getName().toLowerCase().endsWith(".xdb")) { xdbFile = strList[n+1]; break; } else { n++; } } } // 向FTP服务器发送与XML同名的XDB格式文件 } } finally { //关闭FTP服务器的链接 }