java编程批处理

java编程批处理,第1张

import java.io.File

import java.io.FileWriter

import java.io.IOException

import java.sql.ResultSet

import java.sql.SQLException

import java.util.ArrayList

import java.util.Stack

public class CheckFilebatch {

private static final String LOG_FILE = "F:/CheckFilebatch.log"//报错的信息写在这个文件里。

private static final String FILE_HOME = "F:/niceStore /"//要 *** 作的物理目录

public static void main(String[] args) {

try {

ArrayList<String>fileListInDB = new ArrayList<String>()

FileWriter fw = new FileWriter(LOG_FILE)

// TODO

// 取得DB连接,执行sql“SELECT DISTINCT FILEPATH FROM ARR-FILE”,得到一个ResultSet

// 从DB中取出文件信息,放前枯入fileListInDB 中,

ResultSet rs = null

while (rs.next()) {

String path = rs.getString("File_Column")

File f = new File(path)

if (!f.exists()) {

// 不合法的报液悔晌出错误信息。

System.out.println("file not exists: " + path)

fw.write("file not exists: " + path + "\n")

} else {

// 合法的,转化为路径名的规范路径名字符串,加入到fileListInDB中

fileListInDB.add(f.getCanonicalPath())

}

}

rs.close()

//

fw.write("\n\n\n\n")

//下面开始遍历物理目录

File home = new File(FILE_HOME)

Stack<File>tmpStack = new Stack<File>()

tmpStack.add(home)

while (!tmpStack.isEmpty()) {

File tmp = tmpStack.pop()

File[] childs = tmp.listFiles()

for (int i = 0i <childs.lengthi++) {

File child = childs[i]

if (child.isDirectory()) {

tmpStack.push(child)

} else {

if (fileListInDB.contains(child.getCanonicalPath())) {

fileListInDB.remove(child.getCanonicalPath())

} else {

// 删除文件。

child.delete()

// 这里的 *** 作如果把它移动到另一个闹锋目录里,作为备份,更好些。

fw.write("delete file: " + child.getCanonicalPath())

}

}

}

}

// 这个程序只考虑文件,不考虑目录

fw.close()

} catch (SQLException e) {

e.printStackTrace()

} catch (IOException e1) {

e1.printStackTrace()

}

}

}

*** 作步骤

1、新建一个文件夹,将要执悉斗燃行java程序(可使用eclipse导出的可执行的jar包)拷贝到该文件夹中;

2、将jdk中jre文件夹拷贝到要执行的java程序所在的文件夹;

3、在java程序销裂所在的文件夹中新建一个bat文件。

bat文件样例:

样例一:

@echo off

set PATH=.%CD%\SocketAdapter_lib\jre\bin

set CLASSPATH=.

start java.exe -jar SocketAdapter.jar

@pause

样例二:

@echo off

start SocketAdapter_lib\jre\bin\java -jar SocketAdapter.jar

@pause

注:

可以在没有安装JRE的环境中,运行Java应用程序

java.exe 具体使用参睁虚见cmd中输入java -help

javaw.exe 相对于 java.exe 执行java程序过程中MS-DOS不可见

对于安装了JRE的环境中,第2步可以省略,bat文件如下

样例三:

@echo off

java -jar SocketAdapter.jar

@pause

批量数据进入数据库使用addBatch()和executeBatch()方法

PreparedStatement.addBatch()...... PreparedStatement.executeBatch()需要注意的是一次最多不要和袭腔超过50条:1.因为插入的时候数据库已经锁定,然而若是一次性插入太多会禅郑造成其他业务的等待。2.会造成内存的唤衫溢出

举例:

PreparedStatement pst = (PreparedStatement) con.prepareStatement("insert into ***** values (?,'***')") for (int i = 0i <10000i++) { pst.setInt(1, i) // 把一个SQL命令加入命令列表 pst.addBatch() } // 执行批量更新 pst.executeBatch() // 语句执行完毕,提交本事务 con.commit()


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8244401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存