新手求指导,关于线程和流 创建一个线程,监视某个目录,一旦目录里出现新的文件,就将文件转移到指定的目录里去。求方法,求代码,谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 思路:1.先创建一个线程(thread)2.线程负责查看指定目录3.判断 目录如果不为空说明出现新文件 4.出现新文件 实例化一个file对象 把文件存放到相应的目录 for exampleclass MonitorThread extends Thread { String srcdir; String targetdir; boolean running = true; public MonitorThread(String srcdir, String targetdir) { this.srcdir = srcdir; this.targetdir = targetdir; } public void stop() {this.running = false;} public void run() { File dir = new File(srcdir); while (running) { try { if (!dir.isDirectory()) { System.out.println("not directory"); return; } if (dir.listFiles().length() > 0) { Process p = Runtime.getRuntime().exec("move /Y " + srcdir + "/*.* " + targetdir + "/."); p.waitFor(); } else { sleep(1000); } } catch (Exception e) {e.printStackTrace();} } }} LZ是要判断新文件啊,那就第一次启动时把原来的文件保存到一个结合中 public void run() { File dir = new File(srcdir); if (!dir.isDirectory()) { System.out.println("not directory"); return; } Set<File> originalFiles = new HashSet<File>(); for (File f : dir.listFiles()) { orignalFiles.add(f); } Set<File> newFiles = new HashSet<File>(); while (running) { try { newFiles.clear(); for (File f : dir.listFiles()) { if (!originalFiles.contains(f)) { newFiles.add(f); } } if (newFiles.size() > 0) { StringBuilder cmd = new StringBuilder("move /Y "); for (File f : newFiles) { cmd.append(f.getAbsoluteFile().getPath()).append(" "); } cmd.append(targetdir + "/."); Process p = Runtime.getRuntime().exec(cmd.toString()); p.waitFor(); } else { sleep(1000); } } catch (Exception e) {e.printStackTrace();} } } 给你两个参考链接:http://download.oracle.com/javase/tutorial/essential/io/notification.html (英文)http://xxing22657-yahoo-com-cn.iteye.com/blog/1054496 (中文) 二进制问题 sqlprofiler.jar 运行问题 用正则表达式删除注释 关于自己写的一个编码转换的函数的问题~请高手给看下问题 Java5的泛型使用问题 通过一个具体的年份和月份,想得到这个月份具体有几天。 听人说,java编程只用记录本就能编程,真的吗? 新手算法问题请教! 唉,每次只能来200,是有点不爽~~ *******我觉得这个问题有点难度,关于Swing,请进 java io流读取文件 谁来分析下Gc
1.先创建一个线程(thread)
2.线程负责查看指定目录
3.判断 目录如果不为空说明出现新文件
4.出现新文件 实例化一个file对象 把文件存放到相应的目录
class MonitorThread extends Thread {
String srcdir;
String targetdir;
boolean running = true;
public MonitorThread(String srcdir, String targetdir) {
this.srcdir = srcdir;
this.targetdir = targetdir;
}
public void stop() {this.running = false;} public void run() {
File dir = new File(srcdir);
while (running) {
try {
if (!dir.isDirectory()) {
System.out.println("not directory");
return;
}
if (dir.listFiles().length() > 0) {
Process p = Runtime.getRuntime().exec("move /Y " + srcdir + "/*.* " + targetdir + "/.");
p.waitFor();
} else {
sleep(1000);
}
} catch (Exception e) {e.printStackTrace();}
}
}
}
File dir = new File(srcdir);
if (!dir.isDirectory()) {
System.out.println("not directory");
return;
} Set<File> originalFiles = new HashSet<File>();
for (File f : dir.listFiles()) {
orignalFiles.add(f);
}
Set<File> newFiles = new HashSet<File>();
while (running) {
try {
newFiles.clear();
for (File f : dir.listFiles()) {
if (!originalFiles.contains(f)) {
newFiles.add(f);
}
}
if (newFiles.size() > 0) {
StringBuilder cmd = new StringBuilder("move /Y ");
for (File f : newFiles) {
cmd.append(f.getAbsoluteFile().getPath()).append(" ");
}
cmd.append(targetdir + "/."); Process p = Runtime.getRuntime().exec(cmd.toString());
p.waitFor();
} else {
sleep(1000);
}
} catch (Exception e) {e.printStackTrace();}
}
}
http://download.oracle.com/javase/tutorial/essential/io/notification.html (英文)
http://xxing22657-yahoo-com-cn.iteye.com/blog/1054496 (中文)