如果文件夹里面有这么三个文件lat.txt,lon.txt,t2.txt 将其中获取的数据插入到同一张表中的lat,lon,t字段我是这么弄的,
File file = new File(dir);
if (file.isDirectory()) {
String[] filelist = file.list();
// Map> map = new HashMap // List>();
List Xlist = null;
List Ylist = null;
List WDlist = null;
for (int i = 0; i < filelist.length; i++) {
// listdata = getData(dir + "\" + filelist[i]);
// map.put(i + 1, listdata);
File readfile = new File(dir + "\" + filelist[i]);
if (readfile.isFile()) {
if (filelist[i].contains("lat")) {
Xlist = getData(readfile.getPath());
}
if (filelist[i].contains("lon")) {
Ylist = getData(readfile.getPath());
}
if (filelist[i].contains("t2")) {
WDlist = getData(readfile.getPath());
}
}
}
int n = 0;
for (; n < (Xlist.size()); n++) {
ps = conn
.prepareStatement("insert into TFYJ_RCTQ_YC(id,riqi,lat,lon,t2) values(TFYJ_RCTQ_YC_ID.nextval,?,?,?,?)");
ps.setString(1, "2011-11-10");
ps.setObject(2, Xlist.get(n));
ps.setObject(3, Ylist.get(n));
ps.setObject(4, WDlist.get(n));
// ps.setString(2, map.get(1).get(n));
// ps.setString(3, map.get(2).get(n));
// ps.setString(4, map.get(3).get(n));
ps.addBatch();
ps.executeBatch();
ps.clearBatch();
ps.close();
}
但是如果文件夹里面文件换为lat20111201.txt,lon20111201.txt,t220111201.txt,lat20111202.txt,lon20111202.txt,t220111202.txt··· ··· 也就是文件名后面加上日期的很多文件,同样是含lat的文件中的数据插入到lat字段下,相对应的lon,t2插入到lon,t字段下,再把文件名中的日期插入到表中的日期字段中,该怎么弄啊
[quote]关键是同一日期的文件要相对应的插入数据库[/quote]
楼主我是认为你的文件夹中每个日期都对应上面的三个文件,比如日期是20111201这个,就对应lat20111201.txt,lon20111201.txt,t220111201.txt三个文件。下面是代码:
[code="java"]
HashMap latHashMap = new HashMap();
HashMap t2HashMap = new HashMap();
HashMap lonHashMap = new HashMap();
for (File file2 : listFiles) {
//把文件夹中所有的文件分类
String name = file2.getName();
if (name.contains("lat")) {
String substring = name.substring(3);
latHashMap.put(substring, file2);
}else if(name.contains("t2")){
String substring = name.substring(2);
t2HashMap.put(substring, file2);
}else if (name.contains("lon")) {
String substring = name.substring(3);
lonHashMap.put(substring, file2);
}
}
//操作文件,把同日期的不同三种文件内容填入到对应的数据库表的地段中
Set> latEntrySet = latHashMap.entrySet();
for (Entry entry : latEntrySet) {
String dataKey = entry.getKey();
File latFile = entry.getValue();
File t2File = t2HashMap.get(dataKey);
File lonFile = lonHashMap.get(dataKey);
/**
*上面的3个file就是同日期的file,下面就是数据库操作了,自己应该可以解决
*/
//进行数据库操作
}
[/code]
如果每个日期对应的文件不确定的话需改善一下,如果楼主不会了再请教。
楼主,你的文件都是那么命名的吗?也就是"lat"+"日期" 的形式,这样就好办多了啊~
你把你的代码中的这句“String[] filelist = file.list();
”改为“File[] listFiles = file.listFiles();”
然后 这么写:
“for (File file2 : listFiles) {
String name = file2.getName();
if (name.contains("lat")) {
String substring = name.substring(3);
/*
* 其他的一些操作
* 把相应的文件写入数据库中,当然是数据库的预处理操作了
* /
ps.setString(1, substring);
}else if(name.contains("t2")){
String substring = name.substring(2);
/
* 其他的一些操作
* 把相应的文件写入数据库中,当然是数据库的预处理操作了
* /
ps.setString(1, substring);
}else if (name.contains("lon")) {
String substring = name.substring(3);
/
* 其他的一些操作
* 把相应的文件写入数据库中,当然是数据库的预处理操作了
* /
ps.setString(1, substring);
}
/
* 你的其他操作
* */
}
”
这样就可以解决你的问题。。。如果文件名字不是这么规范,请楼主在细细说来听听
代码中的subString就是日期字段,你把该字段插入到数据库中的相应字段就可以了~
如果不是这个意思的话请把问题陈述的详细一点。我不明“关键是同一日期的文件要相对应的插入数据库 ”这句话到底是什么意思。
不能根据日期来区分,因为日期没有规律可循。