如果你的JAVA部署的tomcat,就是你要查找文件的服务器,那就用:
File file = new File("文件路径")。
如果你本地的版JAVA想要访问远权程的一个服务器的文件是否存在,就得用如下方法:
URL url = new URL(“文件路径:可以是本地服务器的路径,也可以是远程服务器的路径”);
HttpURLConnection urlcon = (HttpURLConnection) url.openConnection();
//message = urlcon.getHeaderField(0);
//文件存在‘HTTP/1.1 200 OK’ 文件不存在 ‘HTTP/1.1 404 Not Found’
Long TotalSize=Long.parseLong(urlcon.getHeaderField("Content-Length"));
if (TotalSize>0){
return true;
}else{
return false;
}
㈡ java如何在linux下监听某个目录下是否有文件改变
JDK 7 的nio2 WatchService可以监听文件系统。
Oracle官方教程链接 http://docs.oracle.com/javase/tutorial/essential/io/notification.html
样例代码:
importstaticjava.nio.file.StandardWatchEventKinds.*;
Pathpath=Paths.get("/home");
WatchServicewatchService=FileSystems.getDefault().newWatchService();
WatchKeywatchKey=path.register(watchService,ENTRY_CREATE,ENTRY_DELETE,ENTRY_MODIFY);
/*
privatebooleannotDone=true;
while(notDone){
try{
WatchKeywatchKey=watchService.poll(60,TimeUnit.SECONDS);
List<WatchEvent.Kind<?>>events=watchKey.pollEvents();
for(WatchEventevent:events){
//.register
PathwatchedPath=(Path)watchKey.watchable();
//returnstheeventtype
=event.kind();
//returnsthecontextoftheevent
Pathtarget=(Path)event.context();
}
if(!watchKey.reset()){
...handlesituationnolongervalid
}
}catch(InterruptedExceptione){
Thread.currentThread().interrupt();
}
}
*/
㈢ Java中怎样根据文件的路径去判断该文件夹中是否存在该文件
1. 首先明确一点的是:test.txt文件可以和test文件夹同时存在同一目录下;test文件不能和test文件夹同时存在同一目录下。
原因是:
(1)win的文件和文件夹都是以节点形式存放,这就意味着相同的文件和文件名不能处在同一目录下,会命名冲突。
(2)文件后缀名也算是文件名的一部分,即test.txt文件和test文件不是相同文件名的文件。
2. 基于以上原因,如果我想在d:创建一个test文件夹,但是d:下面有一个test文件,那么由于命名冲突,是不可能创建成功的。
所以,在创建之前,要通过file.exists()判断是否存在test命名的文件或者文件夹,如果返回true,是不能创建的;
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
File file = new File("d:\test_file.txt");
Main.judeFileExists(file);
File dir = new File("d:\test_dir");
Main.judeDirExists(dir);
}// 判断文件是否存在
public static void judeFileExists(File file) {
if (file.exists()) {
System.out.println("file exists");
} else {
System.out.println("file not exists, create it ...");
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} // 判断文件夹是否存在
public static void judeDirExists(File file) {
if (file.exists()) {
if (file.isDirectory()) {
System.out.println("dir exists");
} else {
System.out.println("the same name file exists, can not create dir");
} }
else { System.out.println("dir not exists, create it ...");
file.mkdir();
}
}
}
然后再通过file.isDirectory()来判断这是不是一个文件夹。
㈣ java如何判断给定目录下,是否存在指定的文件夹和文件
publicstaticvoidfind(Filef){
if(!f.isDirectory()||f.listFiles().length<=0)
return;
File[]files=f.listFiles();
for(Filefile:files){
if(file.isFile()){
//System.out.println("got:"+file.getName());
if(file.getName().equals("test111.txt")){
System.out.println(file);
}
}else{
//System.out.println("got:"+file.getName());
if(file.getName().equals("test11")){
System.out.println(file);
}
find(file);//这个不能放进里
}
}
}
㈤ Java判断文件夹是否存在,不存在就创建
方法如下:
public static void judeDirExists(File file)
if (file.exists()) if (file.isDirectory())
System.out.println("dir exists"); }
else System.out.println("the same name file exists, can not create dir"); }41
else System.out.println("dir not exists, create it ..."); 、来
file.mkdir();
㈥ java实时监控局域网共享文件夹并复制文件到指定位置
呵呵,这个要求有点高,只能给个思路:
1、监视A文件夹,这个有两个方式:
a、可以开启一内个线程,定时容扫描A文件夹,此方式适用于JDK所有版本。
b、从JDK7开始,通过WatchService、WatchKey等可以监听文件夹变化。
2、从A移动到B:保证A目录可读,B目录可写,然后用FileInputStream和FileOutputStream即可。
3、确保从A到B:这个可以从网上找一些计算文档摘要的工具,移动后计算A、B文件夹中文档的摘要,检查是否移动成功。 a、可以开启一个线程,定时扫描
㈦ Java 如何监控文件目录的变化
JavaSE 1.7提供了相关的API,去监视文件或者文件夹的变动,主要的API都在java.nio.file下面,其大概流程如下:
packageorg.xdemo.superutil.j2se.filewatch;
importstaticjava.nio.file.LinkOption.NOFOLLOW_LINKS;
importjava.io.File;
importjava.io.IOException;
importjava.nio.file.FileSystems;
importjava.nio.file.FileVisitResult;
importjava.nio.file.Files;
importjava.nio.file.Path;
importjava.nio.file.Paths;
importjava.nio.file.SimpleFileVisitor;
importjava.nio.file.StandardWatchEventKinds;
importjava.nio.file.WatchEvent;
importjava.nio.file.WatchEvent.Kind;
importjava.nio.file.WatchKey;
importjava.nio.file.WatchService;
importjava.nio.file.attribute.BasicFileAttributes;
importjava.util.HashMap;
importjava.util.Map;
/**
*文件夹监控
*
*@authorGoofy<ahref="http://www.xdemo.org/">http://www.xdemo.org/</a>
*@Date2015年7月3日上午9:21:33
*/
publicclassWatchDir{
;
privatefinalMap<WatchKey,Path>keys;
privatefinalbooleansubDir;
/**
*构造方法
*
*@paramfile
*文件目录,不可以是文件
*@paramsubDir
*@throwsException
*/
publicWatchDir(Filefile,booleansubDir,FileActionCallbackcallback)throwsException{
if(!file.isDirectory())
thrownewException(file.getAbsolutePath()+"isnotadirectory!");
this.watcher=FileSystems.getDefault().newWatchService();
this.keys=newHashMap<WatchKey,Path>();
this.subDir=subDir;
Pathdir=Paths.get(file.getAbsolutePath());
if(subDir){
registerAll(dir);
}else{
register(dir);
}
processEvents(callback);
}
@SuppressWarnings("unchecked")
static<T>WatchEvent<T>cast(WatchEvent<?>event){
return(WatchEvent<T>)event;
}
/**
*观察指定的目录
*
*@paramdir
*@throwsIOException
*/
privatevoidregister(Pathdir)throwsIOException{
WatchKeykey=dir.register(watcher,StandardWatchEventKinds.ENTRY_CREATE,StandardWatchEventKinds.ENTRY_DELETE,StandardWatchEventKinds.ENTRY_MODIFY);
keys.put(key,dir);
}
/**
*观察指定的目录,并且包括子目录
*/
privatevoidregisterAll(finalPathstart)throwsIOException{
Files.walkFileTree(start,newSimpleFileVisitor<Path>(){
@Override
(Pathdir,BasicFileAttributesattrs)throwsIOException{
register(dir);
returnFileVisitResult.CONTINUE;
}
});
}
/**
*发生文件变化的回调函数
*/
@SuppressWarnings("rawtypes")
voidprocessEvents(FileActionCallbackcallback){
for(;;){
WatchKeykey;
try{
key=watcher.take();
}catch(InterruptedExceptionx){
return;
}
Pathdir=keys.get(key);
if(dir==null){
System.err.println("操作未识别");
continue;
}
for(WatchEvent<?>event:key.pollEvents()){
Kindkind=event.kind();
//事件可能丢失或遗弃
if(kind==StandardWatchEventKinds.OVERFLOW){
continue;
}
//目录内的变化可能是文件或者目录
WatchEvent<Path>ev=cast(event);
Pathname=ev.context();
Pathchild=dir.resolve(name);
Filefile=child.toFile();
if(kind.name().equals(FileAction.DELETE.getValue())){
callback.delete(file);
}elseif(kind.name().equals(FileAction.CREATE.getValue())){
callback.create(file);
}elseif(kind.name().equals(FileAction.MODIFY.getValue())){
callback.modify(file);
}else{
continue;
}
//ifdirectoryiscreated,andwatchingrecursively,then
//registeritanditssub-directories
if(subDir&&(kind==StandardWatchEventKinds.ENTRY_CREATE)){
try{
if(Files.isDirectory(child,NOFOLLOW_LINKS)){
registerAll(child);
}
}catch(IOExceptionx){
//ignoretokeepsamplereadbale
}
}
}
booleanvalid=key.reset();
if(!valid){
//移除不可访问的目录
//因为有可能目录被移除,就会无法访问
keys.remove(key);
//如果待监控的目录都不存在了,就中断执行
if(keys.isEmpty()){
break;
}
}
}
}
}
㈧ Java判断文件夹是否存在,不存在就创建
用File类中的exists()方法判断是否存在;
用File类中的mkdirs创建文件目录;
java代码如下:
publicFilegetFile(Filefile){
//判断文件夹是否存在
if(!file.exists()){
//不存在,则创建文件夹
file.mkdirs();
}
returnfile;
}
注意:
1. 首先明确一点的是:test.txt文件可以和test文件夹同时存在同一目录下;test文件不能和test文件夹同时存在同一目录下。
原因是:
(1)win的文件和文件夹都是以节点形式存放,这就意味着相同的文件和文件名不能处在同一目录下,会命名冲突。
2. 基于以上原因,如果我想在d:创建一个test文件夹,但是d:下面有一个test文件,那么由于命名冲突,是不可能创建成功的。
所以,在创建之前,要通过file.exists()判断是否存在test命名的文件或者文件夹,如果返回true,是不能创建的;
(2)文件后缀名也算是文件名的一部分,即test.txt文件和test文件不是相同文件名的文件。
所以,在创建之前,要通过file.exists()判断是否存在test命名的文件或者文件夹,如果返回true,是不能创建的;
然后再通过file.isDirectory()来判断这是不是一个文件夹。
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
File file = new File("d:\test_file.txt");
Main.judeFileExists(file);
File dir = new File("d:\test_dir");
Main.judeDirExists(dir);
}
// 判断文件是否存在
public static void judeFileExists(File file) {
if (file.exists()) {
System.out.println("file exists");
} else {
System.out.println("file not exists, create it ...");
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
// 判断文件夹是否存在
public static void judeDirExists(File file) {
if (file.exists()) {
if (file.isDirectory()) {
System.out.println("dir exists");
} else {
System.out.println("the same name file exists, can not create dir");
}
} else {
System.out.println("dir not exists, create it ...");
file.mkdir();
}
}
}
㈨ 用ReadDirectoryChangesW监控目录,怎么知道目录下增加的是文件夹还是文件
在第五个参数判断:
DWORD dwNotifyFilter;
当值为:FILE_NOTIFY_CHANGE_FILE_NAME时,修改的是回文件
当值为:FILE_NOTIFY_CHANGE_DIR_NAME 时,修改的是目录答