三日过后 2011-12-03 10:20
浏览 227
已采纳

读取文件问题

如果文件夹里面有这么三个文件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字段下,再把文件名中的日期插入到表中的日期字段中,该怎么弄啊

  • 写回答

3条回答 默认 最新

  • wojiaoxiaofage 2011-12-03 19:35
    关注

    [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]
    如果每个日期对应的文件不确定的话需改善一下,如果楼主不会了再请教。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算