如何判断一个文件夹下哪个文件是新的,然后将这个文件的文件名写入数据库?

netskychw 2003-10-15 04:26:57
如何判断一个文件夹下哪个文件是新的,然后将这个文件的文件名写入数据库?
可以用jsp写,但最好能写个javabean;实在不行给给思路,应该用什莫相关的方法也行

另:我想在我执行某一个执行程序时,自动执行这个jsp;
...全文
168 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
netskychw 2003-11-10
  • 打赏
  • 举报
回复
各位辛苦了,
peacock_king 2003-10-16
  • 打赏
  • 举报
回复
判断扩展名时,name.substring(index).equalsIgnoreCase(".txt")
hxzhappy 2003-10-16
  • 打赏
  • 举报
回复
楼上多是高手,不错!
peacock_king 2003-10-16
  • 打赏
  • 举报
回复
以下是FilenameFilter用法,list函数返回过滤得到的文件名数组,
new File("G:\\").list(
new java.io.FilenameFilter(){
public boolean accept(File dir,String name){
int index=name.lastIndexOf(".");
if(index>0&&name.substring(index).equals(".txt")){
System.out.println(name);
return true;
}
return false;
}
});
caina3 2003-10-16
  • 打赏
  • 举报
回复
mark
yaray 2003-10-16
  • 打赏
  • 举报
回复
String strFile = "C:\test\test.txt";
java.io.File file = new java.io.File(strFile);
long lastModified = file.lastModified(); // 取得指定文件的最后修改时间(毫秒)
gdx 2003-10-16
  • 打赏
  • 举报
回复
1.FilenameFilter接口实现:
/**
* 取指定目录下适合的文件名称 [不递归]
*
* @param dir 指定目录
* @param suffix 文件后缀
* @param include 是否包含
* @return 适合条件的文件名
*/
public static String[] getFile(File dir, String suffix, boolean include){
if(!dir.isDirectory()) return new String[0];
return dir.list(new FilenameFilterImpl(suffix, include));
}

private static class FilenameFilterImpl implements FilenameFilter{

private String suffix;
private boolean include;

public FilenameFilterImpl(String suffix, boolean include) {
this.suffix = suffix;
this.include = include;
}

public boolean accept(File dir, String name){
if(name.endsWith(suffix)){
return(include);
}else{
return(!include);
}
}
2.连接SQLServer数据库用JDBC原生程序,可以在microsoft找到
3.如何判断一个文件夹下哪个文件是新的
可以用一后台进程,扫描文件更新时间,如文件更新,则重新读入。
netskychw 2003-10-16
  • 打赏
  • 举报
回复
有没高人帮忙,可以多加些分的!!!谢了先,急
peacock_king 2003-10-16
  • 打赏
  • 举报
回复
抱歉,有一处改动

if(!file.isDirectory()&&index>0&&name.substring(index).equalsIgnoreCase(".txt")&&l>Long.parseLong(fileInfo[0])){
fileInfo[0]=String.valueOf(l);
fileInfo[1]=name;
}
peacock_king 2003-10-16
  • 打赏
  • 举报
回复
把下面这个线程作为随同服务器启动,它会每隔一段时间检查更新状况,也可以手动调用这个javabean的updateFilenameTable()函数来更新。

//FileBean.java

import java.io.*;
public class FileBean extends Thread{
private String[] newFile(){
final String fileInfo[]={"0",""};//第一项为时间,第二项为文件名
new File("G:\\").list(
new java.io.FilenameFilter(){
public boolean accept(File dir,String name){
int index=name.lastIndexOf(".");
File file=new File(dir.getAbsolutePath()+File.separator+name);
long l=file.lastModified();//得到此文件最后更新时间
if(!file.isDirectory()&&name.substring(index).equalsIgnoreCase(".txt")&&l>Long.parseLong(fileInfo[0])){
fileInfo[0]=String.valueOf(l);
fileInfo[1]=name;
}//判断并刷新数组中的数据,最后即得到最新文件信息
return true;
}
});
return fileInfo;
}
public synchronized void updateFilenameTable(){
//判断最新文件为何(用newFile()函数),并更新数据库中的文件名表
}

public void run(){
while(true){
//遍历文件夹中文件,判断哪个是最近更新的,将其添入数据库中
try{
Thread.sleep(60*60*1000);//每间隔一小时遍历一次
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
}
netskychw 2003-10-15
  • 打赏
  • 举报
回复
有谁能贴一段代码出来,主要有两个问题需要解决
1.怎样使用FilenameFilter接口
2.如何连接数据库(SQL Server2000),最好不用windows自带的ODBC数据源
在jsp中直接写代码连接数据库中的一个表.
netskychw 2003-10-15
  • 打赏
  • 举报
回复
名字是自己随便起的,有共同的扩展名.rpt
xinshou1979330 2003-10-15
  • 打赏
  • 举报
回复
楼主存储到文件夹下的文件是怎么保存进去的啊
名字是随意起的还是有规律的啊

说清楚些啊
hj12 2003-10-15
  • 打赏
  • 举报
回复
把文件后面加个编号,找标号最大的!
qmei 2003-10-15
  • 打赏
  • 举报
回复
用一个表来保存文件名,表中没有的文件名,就是新的,并把文件名存进去
HPFYEAH 2003-10-15
  • 打赏
  • 举报
回复
在数据库中建一个表保存文件的最后编辑时间,然后通过程序判断。
首先判断是否为新文件,为新,则在数据库中建立此文件的编辑时间信息并该文件的文件名写入数据库;不为新,则与数据库中的信息进行比较,如果不相同,则将该文件的文件名写入数据库,并在数据库中更新该文件编辑时间;如果相同,则不做任何更改。
yangjuanli 2003-10-15
  • 打赏
  • 举报
回复
好像只有比较文件更新时间了。
黑马 2003-10-15
  • 打赏
  • 举报
回复
我觉得应该通过文件的时间进行比较吧

比较之后,按照比较结果上传文件即可:)

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧