本人对文件解析不太熟悉,希望有高手帮忙解答或给出代码demo,万分感谢!例如目录下有A文件、B文件、C文件,A文件名fs20160629-00000.txt,B文件名ts20160629-00001.txt,C文件名Js20160629-00002.txt,
1)A文件中有数据:
http://www.oin.com:8081/?id=16696072KL|18129-02=rzrfs-3-201606290653047
http://www.oin.com:8081/?id=16696072KW|18129-02=rzrfs-3-201606290653047
http://www.oin.com:8081/?id=16696072L3|18129-02=rzrfs-3-201606290653047
http://www.oin.com:8081/?id=16696072L9|18129-02=rzrfs-3-201606290653047
2)B文件中有数据:
http://www.oin.com:8086/?id=16696073PP|18129-02=rzrfs-3-201606290653046
http://www.oin.com:8086/?id=16696073R0|18129-02=rzrfs-3-201606290653046
http://www.oin.com:8086/?id=16696073R8|18129-02=rzrfs-3-201606290653046
http://www.toin.com:8086/?id=16696073RJ|18129-02=rzrfs-3-201606290653046
http://www.oin.com:8086/?id=16696073RU|18129-02=rzrfs-3-201606290653046
http://www.oin.com:8086/?id=16696073S1|18129-02=rzrfs-3-201606290653047
http://www.oin.com:8086/?id=16696073S9|18129-02=rzrfs-3-201606290653047
3)C文件中数据结构相似,只是中间的id号不同。
现在需求:用JAVA语言或脚本语言对A,B,C文件进行读取
1)分别获取相应的文件名;
2)分别分别对相应的文件内容进行读取,解析,获取http地址(如:http://www.oin.com:8086/?id=16696073S9|18129-02=rzrfs-3-201606290653047);
2)分别对相应的文件内容进行读取,解析,截取相应的数据(每个http路径最后面这个日期,如:201606290653047);
3)把文件名、文件名中对应的HTTP地址、每条http地址后面截取的时间作为数据库字段插入数据库。
1)A文件中有数据:
http://www.oin.com:8081/?id=16696072KL|18129-02=rzrfs-3-201606290653047
http://www.oin.com:8081/?id=16696072KW|18129-02=rzrfs-3-201606290653047
http://www.oin.com:8081/?id=16696072L3|18129-02=rzrfs-3-201606290653047
http://www.oin.com:8081/?id=16696072L9|18129-02=rzrfs-3-201606290653047
2)B文件中有数据:
http://www.oin.com:8086/?id=16696073PP|18129-02=rzrfs-3-201606290653046
http://www.oin.com:8086/?id=16696073R0|18129-02=rzrfs-3-201606290653046
http://www.oin.com:8086/?id=16696073R8|18129-02=rzrfs-3-201606290653046
http://www.toin.com:8086/?id=16696073RJ|18129-02=rzrfs-3-201606290653046
http://www.oin.com:8086/?id=16696073RU|18129-02=rzrfs-3-201606290653046
http://www.oin.com:8086/?id=16696073S1|18129-02=rzrfs-3-201606290653047
http://www.oin.com:8086/?id=16696073S9|18129-02=rzrfs-3-201606290653047
3)C文件中数据结构相似,只是中间的id号不同。
现在需求:用JAVA语言或脚本语言对A,B,C文件进行读取
1)分别获取相应的文件名;
2)分别分别对相应的文件内容进行读取,解析,获取http地址(如:http://www.oin.com:8086/?id=16696073S9|18129-02=rzrfs-3-201606290653047);
2)分别对相应的文件内容进行读取,解析,截取相应的数据(每个http路径最后面这个日期,如:201606290653047);
3)把文件名、文件名中对应的HTTP地址、每条http地址后面截取的时间作为数据库字段插入数据库。
解决方案
85
新手解答:
public class Test {
public static void main(String[] args) {
File f = new File("src/txt"); //相对路径
File[] children = f.listFiles();//取得全部子文件
for(int i=0; i<children.length; i++) {
File child = children[i];
String fileName = child.getName();//得到文件名
List<Info> list = new ArrayList<>();
if(child.isFile()) { //判断能否是标准文件(可以改换正则匹配)
try {
list = getInfoList(child);//取得文件中的信息集合
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(fileName);
for(int j=0; j<list.size(); j++) {
Info info = list.get(j);
System.out.println("path=" + info.getPath() + "--date=" + info.getDate());
}
System.out.println("--next file--");
}
}
/**
* 读取文件返回信息集合
* @param file 文件对象
* @return
* @throws IOException
*/
public static List<Info> getInfoList(File file) throws IOException {
List<Info> list = new ArrayList<>();
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String line = "";
while((line = br.readLine()) != null) {
int index = line.indexOf("?");
String path = line.substring(0, index - 1);//根据?截子串
int end = line.lastIndexOf("-");
String date = line.substring(end + 1);//根据-截子串
Info info = new Info();
info.setPath(path);
info.setDate(date);
list.add(info);
}
return list;
}
}
class Info {
//地址
private String path;
//时间
private String date;
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
15
提供思路
1、获取文件名这个不难
2、文件信息按行读取,信息存集合
3、截取日期时,获取最后的一个”-” 到末尾,就是你的日期
4、截取的数据入库
1、获取文件名这个不难
2、文件信息按行读取,信息存集合
3、截取日期时,获取最后的一个”-” 到末尾,就是你的日期
4、截取的数据入库