需求背景:
将数据库里的数据与关联的文件路径一一对应!如:
将Table file_config 中的 File_path :/opt/downloads/20121105/001.pdf 修改为 :/opt/downloads/20121107/001.pdf
这样就需要做两步处理,一是更新数据库,二是移动文件与数据库中的路径保持一致!这样看来是如此的简单,但是在实际的操作运行过程就发现了一个问题,Java中执行Linux的命令(如mv)时,并不支持通配符(如?*),就这样一来就不得不将每一个文件执行一条mv命令了。
Linux 中执行 mv命令可以支持通配符(正则表达式),如: mv /opt/temp/srcpath/*.pdf /opt/temp/destpath/
是完全可以的。但是同样的操作交给Java的Runtime来执行就完成不了。
package com.mss.task; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; public class TestComman { /** * @param args */ public static void main(String[] args) { String srcpath = "/opt/temp/srcpath/"; String destpath = "/opt/temp/destpath/"; String command = "mv "+ srcpath + args[0] +" "+destpath; try { System.out.println("执行的命令为:"+command); Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec(command); InputStream is = process.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line = ""; while((line = reader.readLine())!=null){ System.out.println(line); } } catch (Exception e) { e.printStackTrace(); } } }
或许Java 的Runtime 有更高级的用法也不得而知,就目前而言我并未发现有更好的处理方式,只能一个文件对应一个mv 命令了!
Java 执行Linux 命令时不支持正则表达式
最新推荐文章于 2022-06-30 14:45:45 发布