首页 技术 正文
技术 2022年11月12日
0 收藏 571 点赞 4,369 浏览 1743 个字

这是我在把数据导入到数据库时遇到问题,总结下来的。包含两个方法,一个方法是读取文件路径下的文件列表,主方法是执行cmd命令,在导入时想得到导入一个文件的时间,涉及到线程阻塞问题,这个问题理解不是很深,应该是执行cmd命令时,相当于开启了一个新的线程,如果需要线程执行完再开启新的线程,需要阻塞新线程,用到了WaitFor().

代码如下:

package loadFile;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.util.ArrayList;/**JAVA 调用命令行加载数据到数据库中
* @author ywf
*
*/
public class LoadData {public static void main(String[] args) throws Exception {
String path = "D:\\1";// 导入文件路径
ArrayList<File> list = new ArrayList();
getFile(list, path);
String UERNAME = "SYSDBA";
String PASSWORD = "szoscar55";
String cmd = "oimpexp -F ";
for (File f : list) {
long time = System.currentTimeMillis();
String command = cmd + "\"" + f.getPath() + "\"" + " -S SYSDBA -T "
+ "\"MB_QL\""
+ " -B 30 -A 1 -d 1 -H localhost -D OSRDB -p 2003 -U "
+ UERNAME + " -P " + PASSWORD + " -Y UTF-8";
System.out.println(command);
Process pro = Runtime.getRuntime().exec("cmd /c " + command);
int a = pro.waitFor();
if (a != 0) {
pro.destroy();
}
long time1 = System.currentTimeMillis();
System.out.println(f.getName() + "执行结束. 时间为:" + (time1 - time)
/ 1000 + "s");
}
}/**
* 文件夹下的文件列表
* @param fileAll
* @param path
* @throws Exception
*/
public static void getFile(ArrayList fileAll, String path) throws Exception {
File files = new File(path);
ArrayList<File> dirs = new ArrayList();// 存储文件夹
// ArrayList <File> fileAll = new ArrayList<File>();//存储文件
dirs.add(files);
int index = 0;
while (index < dirs.size()) {
File file1 = dirs.get(index);
if (file1.isDirectory()) {
File[] fileList = file1.listFiles();
for (int i = 0; i < fileList.length; i++) {
File ff = fileList[i];
if (ff.isFile()) {
fileAll.add(ff);
} else {
dirs.add(ff);
}
}
} else {
fileAll.add(file1);
}
index++;
}
}
}

  对cmd命令不是很懂,程序中写的cmd /c +命令,也可以直接执行命令。我是参照下面这篇文章加上的

http://wenku.baidu.com/view/6e80a982e53a580216fcfea4.html

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,565
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,413
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,186
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905