java 的WatchService 類提供了一種方式可以檢查
try
{
WatchService watchService = FileSystems.getDefault()
.newWatchService();
Path path = Paths.get(pathName);
// 注冊監聽器
path.register(watchService,
StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_DELETE);
while (true)
{
// 阻塞方式,消費文件更改事件
List<WatchEvent<?>> watchEvents = watchService.take()
.pollEvents();
for (WatchEvent<?> watchEvent : watchEvents)
{
System.out.printf("[%s]文件發生了[%s]事件。%n", watchEvent
.context(), watchEvent.kind());
}
}
}
catch (Exception e)
{
}
❷ java實時監控區域網共享文件夾並復制文件到指定位置
首先要保證電腦A和電腦B網路可到達
然後在java里用一個線程(死循環)一直「監控」電腦A里的共享文件夾的大小 只要一有變化就讓電腦A里的共享文件夾下的所有文件復制一份到電腦B的共享文件夾下 然後把電腦A里的共享文件夾下的文件刪除
❸ 如何監視計算機的CPU,內存和磁碟使用情況在Java中
使用sigar來監控,簡單方便!
使用說明:以下代碼需要配合sigar的dll文件來用,需要將dll文件放到JDK下的bin文件夾下,供sigar程序調用,還需要sigarjar包。以下程序經過測試,完全可用!
有關jar包跟dll文件我上傳不了,私信我,我發你importjava.net.InetAddress;
importjava.net.UnknownHostException;
importjava.util.Map;
importjava.util.Properties;
importjava.util.Timer;
importjava.util.TimerTask;
importorg.hyperic.sigar.CpuInfo;
importorg.hyperic.sigar.CpuPerc;
importorg.hyperic.sigar.FileSystem;
importorg.hyperic.sigar.FileSystemUsage;
importorg.hyperic.sigar.Mem;
importorg.hyperic.sigar.NetFlags;
importorg.hyperic.sigar.NetInterfaceConfig;
importorg.hyperic.sigar.NetInterfaceStat;
importorg.hyperic.sigar.OperatingSystem;
importorg.hyperic.sigar.Sigar;
importorg.hyperic.sigar.SigarException;
importorg.hyperic.sigar.Swap;
importorg.hyperic.sigar.Who;
publicclassRuntimeTest{
publicstaticvoidmain(String[]args){
try{
Timertimer=newTimer();//定時器
TimerTasktask=newTimerTask(){
publicvoidrun(){
try{
memory();
}catch(SigarExceptione){
e.printStackTrace();
}
}
};
try{
timer.schele(task,0,3000);//每3秒取一次
}catch(Exceptionex){
ex.printStackTrace();
}
//System信息,從jvm獲取
//property();//根據自己的需求,都可以放到定時器中定時獲取
//cpu信息
//cpu();
//內存信息
//memory();
//操作系統信息
//os();
//用戶信息
//who();}catch(Exceptione1){
e1.printStackTrace();
}
}
privatestaticvoidproperty()throwsUnknownHostException{
Runtimer=Runtime.getRuntime();
Propertiesprops=System.getProperties();
InetAddressaddr;
addr=InetAddress.getLocalHost();
Stringip=addr.getHostAddress();
Map<String,String>map=System.getenv();
StringuserName=map.get("USERNAME");//獲取用戶名
StringcomputerName=map.get("COMPUTERNAME");//獲取計算機名
StringuserDomain=map.get("USERDOMAIN");//獲取計算機域名
System.out.println("用戶名:"+userName);
System.out.println("計算機名:"+computerName);
System.out.println("計算機域名:"+userDomain);
System.out.println("本地ip地址:"+ip);
System.out.println("本地主機名:"+addr.getHostName());
System.out.println("JVM可以使用的總內存:"+r.totalMemory());
System.out.println("JVM可以使用的剩餘內存:"+r.freeMemory());
System.out.println("JVM可以使用的處理器個數:"+r.availableProcessors());
System.out.println("Java的運行環境版本:"+props.getProperty("java.version"));
System.out.println("Java的運行環境供應商:"+props.getProperty("java.vendor"));
System.out.println("Java供應商的URL:"+props.getProperty("java.vendor.url"));
System.out.println("Java的安裝路徑:"+props.getProperty("java.home"));
System.out.println("Java的虛擬機規范版本:"+props.getProperty("java.vm.specification.version"));
System.out.println("Java的虛擬機規范供應商:"+props.getProperty("java.vm.specification.vendor"));
System.out.println("Java的虛擬機規范名稱:"+props.getProperty("java.vm.specification.name"));
System.out.println("Java的虛擬機實現版本:"+props.getProperty("java.vm.version"));
System.out.println("Java的虛擬機實現供應商:"+props.getProperty("java.vm.vendor"));
System.out.println("Java的虛擬機實現名稱:"+props.getProperty("java.vm.name"));
System.out.println("Java運行時環境規范版本:"+props.getProperty("java.specification.version"));
System.out.println("Java運行時環境規范供應商:"+props.getProperty("java.specification.vender"));
System.out.println("Java運行時環境規范名稱:"+props.getProperty("java.specification.name"));
System.out.println("Java的類格式版本號:"+props.getProperty("java.class.version"));
System.out.println("Java的類路徑:"+props.getProperty("java.class.path"));
System.out.println("載入庫時搜索的路徑列表:"+props.getProperty("java.library.path"));
System.out.println("默認的臨時文件路徑:"+props.getProperty("java.io.tmpdir"));
System.out.println("一個或多個擴展目錄的路徑:"+props.getProperty("java.ext.dirs"));
System.out.println("操作系統的名稱:"+props.getProperty("os.name"));
System.out.println("操作系統的構架:"+props.getProperty("os.arch"));
System.out.println("操作系統的版本:"+props.getProperty("os.version"));
System.out.println("文件分隔符:"+props.getProperty("file.separator"));
System.out.println("路徑分隔符:"+props.getProperty("path.separator"));
System.out.println("行分隔符:"+props.getProperty("line.separator"));
System.out.println("用戶的賬戶名稱:"+props.getProperty("user.name"));
System.out.println("用戶的主目錄:"+props.getProperty("user.home"));
System.out.println("用戶的當前工作目錄:"+props.getProperty("user.dir"));
}
privatestaticvoidmemory()throwsSigarException{
Sigarsigar=newSigar();
Memmem=sigar.getMem();
floattotal=mem.getTotal();
floatused=mem.getUsed();
//內存總量
System.out.println("內存總量:"+mem.getTotal()/1024L/1024L+"Mav");
//當前內存使用量
System.out.println("當前內存使用量:"+mem.getUsed()/1024L/1024L+"Mused");
//當前內存剩餘量
System.out.println("當前內存剩餘量:"+mem.getFree()/1024L/1024L+"Mfree");
//當前內存使用率
System.out.println("內存使用率:"+used/total*100+"%");
Swapswap=sigar.getSwap();
//交換區總量
System.out.println("交換區總量:"+swap.getTotal()/1024L/1024L+"Mav");
//當前交換區使用量
System.out.println("當前交換區使用量:"+swap.getUsed()/1024L/1024L+"Mused");
//當前交換區剩餘量
System.out.println("當前交換區剩餘量:"+swap.getFree()/1024L/1024L+"Mfree");
}
privatestaticvoidcpu()throwsSigarException{
Sigarsigar=newSigar();
CpuInfoinfos[]=sigar.getCpuInfoList();
CpuPerccpuList[]=null;
cpuList=sigar.getCpuPercList();
for(inti=0;i<infos.length;i++){//不管是單塊CPU還是多CPU都適用
CpuInfoinfo=infos[i];
System.out.println("第"+(i+1)+"塊CPU信息");
System.out.println("CPU的總量MHz:"+info.getMhz());//CPU的總量MHz
System.out.println("CPU生產商:"+info.getVendor());//獲得CPU的賣主,如:Intel
System.out.println("CPU類別:"+info.getModel());//獲得CPU的類別,如:Celeron
System.out.println("CPU緩存數量:"+info.getCacheSize());//緩沖存儲器數量
printCpuPerc(cpuList[i]);
}
}
privatestaticvoidprintCpuPerc(CpuPerccpu){
System.out.println("CPU用戶使用率:"+CpuPerc.format(cpu.getUser()));//用戶使用率
System.out.println("CPU系統使用率:"+CpuPerc.format(cpu.getSys()));//系統使用率
System.out.println("CPU當前等待率:"+CpuPerc.format(cpu.getWait()));//當前等待率
System.out.println("CPU當前錯誤率:"+CpuPerc.format(cpu.getNice()));//
System.out.println("CPU當前空閑率:"+CpuPerc.format(cpu.getIdle()));//當前空閑率
System.out.println("CPU總的使用率:"+CpuPerc.format(cpu.getCombined()));//總的使用率
}
privatestaticvoidos(){
OperatingSystemOS=OperatingSystem.getInstance();
//操作系統內核類型如:386、486、586等x86
System.out.println("操作系統:"+OS.getArch());
System.out.println("操作系統CpuEndian():"+OS.getCpuEndian());//
System.out.println("操作系統DataModel():"+OS.getDataModel());//
//系統描述
System.out.println("操作系統的描述:"+OS.getDescription());
//操作系統類型
//System.out.println("OS.getName():"+OS.getName());
//System.out.println("OS.getPatchLevel():"+OS.getPatchLevel());//
//操作系統的賣主
System.out.println("操作系統的賣主:"+OS.getVendor());
//賣主名稱
System.out.println("操作系統的賣主名:"+OS.getVendorCodeName());
//操作系統名稱
System.out.println("操作系統名稱:"+OS.getVendorName());
//操作系統賣主類型
System.out.println("操作系統賣主類型:"+OS.getVendorVersion());
//操作系統的版本號
System.out.println("操作系統的版本號:"+OS.getVersion());
}
privatestaticvoidwho()throwsSigarException{
Sigarsigar=newSigar();
Whowho[]=sigar.getWhoList();
if(who!=null&&who.length>0){
for(inti=0;i<who.length;i++){
//System.out.println("當前系統進程表中的用戶名"+String.valueOf(i));
Who_who=who[i];
System.out.println("用戶控制台:"+_who.getDevice());
System.out.println("用戶host:"+_who.getHost());
//System.out.println("getTime():"+_who.getTime());
//當前系統進程表中的用戶名
System.out.println("當前系統進程表中的用戶名:"+_who.getUser());
}
}
}
}
❹ 請教,怎麼監控一個Java程序是否運行結束
檢測一個JAVA程序的運行時間方法:
1
2
3
4
long startTime = System.currentTimeMillis();//獲取當前時間
//doSomeThing(); //要運行的java程序
long endTime = System.currentTimeMillis();
System.out.println("程序運行時間:"+(endTime-startTime)+"ms");