⑴ java如何判断文件路径
package jixutest;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.text.DateFormat;
import java.util.Date;
public class TestERead extends Frame implements ActionListener,ItemListener{
private List list;//用于显示文件列表
private TextField details;//用于显示选中的文件(夹)详细情况
private Panel buttons;//用于放置两个button
private Button up,close;
private File currentDir;
private FilenameFilter filter;//文件筛选器
private String[] files;//放置文件(夹)名的数组
private DateFormat dateFormatter=DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT);//日期格式化,注意getDateTimeInstance有两个念前颤参数,分别表示日期和时间
/*
* 说明:
* DateFormat shortDateFormat =DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
* DateFormat mediumDateFormat =DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
* DateFormat longDateFormat =DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
* DateFormat fullDateFormat =DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
* 对应的日期时间格式分别如下:
* 9/29/01 8:44 PM
* Sep 29, 2001 8:44:45 PM
* September 29, 2001 8:44:45 PM EDT
* Saturday, September 29, 2001 8:44:45 PM EDT
* */
public TestERead(String directory,FilenameFilter filter){
super("File Lister");//窗口标题
this.filter=filter;//文件筛选器
addWindowListener(new WindowAdapter(){//关闭窗口
public void windowClosing(WindowEvent e){
dispose();
}
});
list=new List(12,false);//一个12行的list表单
list.setFont(new Font("MonoSpaced",Font.PLAIN,14));//设置字体
list.addActionListener(this);//捕捉双击鼠标的行为
list.addItemListener(this);//捕捉悔悔单击鼠标的行为(选仔败中项)
details=new TextField();//显示文件详情
details.setFont(new Font("MonoSpaced",Font.PLAIN,12));
details.setEditable(false);//readonly
buttons=new Panel();
buttons.setLayout(new FlowLayout(FlowLayout.RIGHT,15,15));//靠右排列项,间距15 15
buttons.setFont(new Font("SansSerif",Font.BOLD,14));
up=new Button("上一级目录");
close=new Button("关闭");
up.addActionListener(this);
close.addActionListener(this);
buttons.add(up);
buttons.add(close);
this.add(list,"Center");
this.add(details,"North");
this.add(buttons,"South");
this.setSize(500,300);
listDirectory(directory);//列出指定目录
}
public void listDirectory(String directory){//此方法作用是列出文件,并不涉及文件的操作
File dir=new File(directory);//创建文件(目录)对象
if(!dir.isDirectory()){
throw new IllegalArgumentException("FileLister:no such directory");
}
files=dir.list(filter);//列出文件并用filter筛选
java.util.Arrays.sort(files);//排序文件
list.removeAll();//清除此前列出的文件列表
list.add("上一级目录");
for(int i=0;i<files.length;i++)
list.add(files[i]);//将文件加入到列表框
this.setTitle(directory);
details.setText(directory);
currentDir=dir;
}
public void itemStateChanged(ItemEvent e){ //选中项(单击)的相应行为,并不涉及双击项目
int i=list.getSelectedIndex()-1;//因为我们在列表中的第一项是“上一级目录”,因此列表的selectedindex要比files的index大一,而我们要获取files的index,就要相应减去1
if(i<0)
return;
String filename=files[i];
File f=new File(currentDir,filename);
if(!f.exists())
throw new IllegalArgumentException("FileLister:no such file or directory");
String info=filename;
if(f.isDirectory())
info+=File.separator;//如果是目录就在后面增加一个分隔符,windows下是“\”,Linux下是“/”
info+=" "+f.length()+ " bytes ";
info +=dateFormatter.format(new java.util.Date(f.lastModified()));
if(f.canRead()) info+=" Read";
if(f.canWrite()) info+=" Write";
details.setText(info);
}
public void actionPerformed(ActionEvent e){//双击项目、单击button的行为定义,由此我们也发现,对于列表的双击和对按钮的单击都属于ActionEvent
if(e.getSource()==close) this.dispose();//按钮close的行为定义
else if(e.getSource()==up) {up();}//按钮up的行为定义
else if(e.getSource()==list) {
int i=list.getSelectedIndex();
if(i==0) up();//如果selectedindex为0,即第一项,就是“上一级目录”那一项,就调用up()方法
else{
String name=files[i-1];
File f=new File(currentDir,name);
String fullname=f.getAbsolutePath();//取得文件(目录)的绝对路径
if(f.isDirectory()) listDirectory(fullname);//如果是目录,则列出
// else new FileViewer(fullname).setVisible(true);//否则创建一个FileViewer类,即要弹出我们昨天所写的FileViewer窗口来读取文件的内容
}
}}
protected void up(){//列出父目录
String parent=currentDir.getParent();
if(parent==null) return;
listDirectory(parent);//一个递归
}
public static void usage(){
System.out.println("Usage: java FileLister [directory_name] "+"[-e file_extension]");
System.exit(0);
}
public static void main(String args[]) throws IOException{
TestERead f;
FilenameFilter filter=null;
String directory=null;
for(int i=0;i<args.length;i++){
if(args[i].equals("-e")){
if(++i>args.length) usage();
final String suffix=args[i];//文件扩展名(-e后接着的输入参数,因为前面已经有++i)
filter=new FilenameFilter(){//筛选器filter要实现FilenameFliter接口
public boolean accept(File dir,String name){
/*Tests if a specified file should be included in a file list.
* dir - the directory in which the file was found.
* name - the name of the file.
* 就是说,如果文件的扩展名跟我们输入的一致,则返回true
* 否则判断文件是否为一个目录,如果是一个目录,那么也返回
* 而其他不符合我们输入的文件,则不列出
*/
if(name.endsWith(suffix)) return true;
else return (new File(dir,name)).isDirectory();
}
};
}
else {
if(directory!=null) usage();//我们初始化的目录是null的,如果非null,表明程序有问题,退出
else directory=args[i];//否则将-e前一个参数赋给directory
}
}
if(directory==null) directory=System.getProperty("user.dir");//如果没有输入目录参数,那么就用用户当前目录
f=new TestERead(directory,filter);//创建一个FileLister,这里有两个参数,一个是目录,一个是筛选器,这个筛选器就是我们刚才创建的那个,注意这个类中我们并没有在main方法之外单独创建一个筛选器方法
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
f.setVisible(true);
}
}
⑵ 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中怎样根据文件的路径去判断该文件夹中是否存在该文件
1.File testFile = new File(testFilePath);
if(!testFile .exists()){
testFile.mkdirs();
System.out.println("测试文件夹不存在");
}
2.File testFile = new File(testFilePath);
if(!testFile .exists()){
testFile.createNewFile();
System.out.println("测试文件不存在");
}
java中File类自带一个检测方法exists可以判断文件或文件夹是否存在,一般与mkdirs方法(该方法相较于mkdir可以创建包括父级路径,推荐使用该方法)或者createNewFile方法合作使用。
1,如果路径不存在,就创建该路径
2,如果文件不存在,就新建该文件
⑷ java中如何判断web工程中图片的绝对路径是否存在
1.基本概念的理解
绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:
C:/xyz/test.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个
URL绝对路径。
相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在
Servlet中,"/"代表Web应用的跟目录。和物理路径的相对表示。例如:"./" 代表当前目录,
"../"代表上级目录。这种类似的表示,也是属于相对路径。
另外关于URI,URL,URN等内容,请参考RFC相关文档标准。
RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,
(http://www.ietf.org/rfc/rfc2396.txt)
2.关于JSP/Servlet中的相对路径和绝对路径。
2.1服务器端的地址
服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的
(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是说这时候
在jsp和servlet中的相对地址应该慧吵棚是相对于前则你的web应用,即相对于http://192.168.0.1/webapp/的。
其用到的地方有:
forward:servlet中的request.getRequestDispatcher(address);这个address是
在服务器端解析的,所以,你要forward到a.jsp应该这么写:
request.getRequestDispatcher(“/user/a.jsp”)这个/相对于当前的web应用webapp,
其绝对地址就是:http://192.168.0.1/webapp/user/a.jsp。
sendRedirect:在碰启jsp中<%response.sendRedirect("/rtccp/user/a.jsp");%>
2.22、客户端的地址
所有的html页面中的相对地址都是相对于服务器根目录(http://192.168.0.1/)的,
而不是(跟目录下的该Web应用的目录)http://192.168.0.1/webapp/的。
Html中的form表单的action属性的地址应该是相对于服务器根目录(http://192.168.0.1/)的,
所以,如果提交到a.jsp为:action="/webapp/user/a.jsp"或action="<%=request.getContextPath()%>"/user/a.jsp;
提交到servlet为actiom="/webapp/handleservlet"
Javascript也是在客户端解析的,所以其相对路径和form表单一样。
因此,一般情况下,在JSP/HTML页面等引用的CSS,Javascript.Action等属性前面最好都加上
<%=request.getContextPath()%>,以确保所引用的文件都属于Web应用中的目录。
另外,应该尽量避免使用类似".","./","../../"等类似的相对该文件位置的相对路径,这样
当文件移动时,很容易出问题。
3. JSP/Servlet中获得当前应用的相对路径和绝对路径
3.1 JSP中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getRequestURI()
文件的绝对路径 :application.getRealPath(request.getRequestURI());
当前web应用的绝对路径 :application.getRealPath("/");
取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()
3.2 Servlet中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getServletPath();
文件的绝对路径 :request.getSession().getServletContext().getRealPath
(request.getRequestURI())
当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
(ServletContext对象获得几种方式:
javax.servlet.http.HttpSession.getServletContext()
javax.servlet.jsp.PageContext.getServletContext()
javax.servlet.ServletConfig.getServletContext()
)
4.java 的Class中获得相对路径,绝对路径的方法
4.1单独的Java类中获得绝对路径
根据java.io.File的Doc文挡,可知:
默认情况下new File("/")代表的目录为:System.getProperty("user.dir")。
一下程序获得执行类的当前路径
package org.cheng.file;
import java.io.File;
public class FileTest {
public static void main(String[] args) throws Exception {
System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));
System.out.println(FileTest.class.getClassLoader().getResource(""));
System.out.println(ClassLoader.getSystemResource(""));
System.out.println(FileTest.class.getResource(""));
System.out.println(FileTest.class.getResource("/")); //Class文件所在路径
System.out.println(new File("/").getAbsolutePath());
System.out.println(System.getProperty("user.dir"));
}
}
4.2服务器中的Java类获得当前路径(来自网络)
(1).Weblogic
WebApplication的系统文件根目录是你的weblogic安装所在根目录。
例如:如果你的weblogic安装在c:/bea/weblogic700.....
那么,你的文件根路径就是c:/.
所以,有两种方式能够让你访问你的服务器端的文件:
a.使用绝对路径:
比如将你的参数文件放在c:/yourconfig/yourconf.properties,
直接使用 new FileInputStream("yourconfig/yourconf.properties");
b.使用相对路径:
相对路径的根目录就是你的webapplication的根路径,即WEB-INF的上一级目录,将你的参数文件放
在yourwebapp/yourconfig/yourconf.properties,
这样使用:
new FileInputStream("./yourconfig/yourconf.properties");
这两种方式均可,自己选择。
(2).Tomcat
在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin
(3).Resin
不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成SERVLET
的路径为根.比如用新建文件法测试File f = new File("a.htm");
这个a.htm在resin的安装目录下
(4).如何读相对路径哪?
在Java文件中getResource或getResourceAsStream均可
例:getClass().getResourceAsStream(filePath);//filePath可以是"/filename",这里的/代表web
发布根路径下WEB-INF/classes
默认使用该方法的路径是:WEB-INF/classes。已经在Tomcat中测试。
5.读取文件时的相对路径,避免硬编码和绝对路径的使用。(来自网络)
5.1 采用Spring的DI机制获得文件,避免硬编码。
参考下面的连接内容:
http://www.javajia.net/viewtopic.php?p=90213&
5.2 配置文件的读取
参考下面的连接内容:
http://dev.csdn.net/develop/article/39/39681.shtm
5.3 通过虚拟路径或相对路径读取一个xml文件,避免硬编码
参考下面的连接内容:
http://club.gamvan.com/club/clubPage.jsp?iPage=1&tID=10708&ccID=8
6.Java中文件的常用操作(复制,移动,删除,创建等)(来自网络)
常用 java File 操作类
http://www.easydone.cn/014/200604022353065155.htm
Java文件操作大全(JSP中)
http://www.pconline.com.cn/pce/empolder/gj/java/0502/559401.html
java文件操作详解(Java中文网)
http://www.51cto.com/html/2005/1108/10947.htm
JAVA 如何创建/删除/修改/复制目录及文件
http://www.gamvan.com/developer/java/2005/2/264.html
总结:
通过上面内容的使用,可以解决在Web应用服务器端,移动文件,查找文件,复制
删除文件等操作,同时对服务器的相对地址,绝对地址概念更加清晰。
建议参考URI,的RFC标准文挡。同时对Java.io.File. Java.net.URI.等内容了解透彻
对其他方面的理解可以更加深入和透彻。
==================================================================================
参考资料:
java/docs/
java.io.File
java.io.InputStream
java.io.OutputStream
java.io.FileInputStream
java.io.FileReader;
java.io.FileOutputStream
java.io.FileWriter;
java.net.URI
java.net.URL
绝对路径与相对路径祥解
http://www.webjx.com/htmldata/2005-02-26/1109430310.html
[‘J道习练’]JSP和Servlet中的绝对路径和相对路径
http://w3china.org/blog/more.asp?name=pcthomas&id=9122&commentid=12376
JSP,Servlet,Class获得当前应用的相对路径和绝对路径
http://cy.lzu.e.cn/cy/club/clubPage.jsp?ccStyle=0&tID=886&ccID=77
如何获得当前文件路径
http://www.matrix.org.cn/resource/article/44/44113_java.html
通过Spring注入机制,取得文件
http://www.javajia.net/viewtopic.php?p=90213&
配置文件的读取
http://dev.csdn.net/develop/article/39/39681.shtm
读取配置文件,通过虚拟路径或相对路径读取一个xml文件,避免硬编码!
http://club.gamvan.com/club/clubPage.jsp?iPage=1&tID=10708&ccID=8
常用 java File 操作类
http://www.easydone.cn/014/200604022353065155.htm
Java文件操作大全
http://www.pconline.com.cn/pce/empolder/gj/java/0502/559401.html
Java文件操作详解
http://www.51cto.com/html/2005/1108/10947.htm
⑸ java 如何判断一个路径是否是有效路径
importjava.io.File;
/**
*本程序演示File类的使用.
*@version1.02005年5月20日
*@authorMichael
*/
classListDirectory{
/**存储要搜索的目录名称.*/
StringdirectoryName;
/**声明一个File对象.*/
FilefileObj;
/**
*构造方法.
*@paramname是一个字符串
*/
ListDirectory(Stringname){
directoryName=name;
fileObj=newFile(name);
}
/**
*显示目录和子目录的方法.
*/
voiddisplay(){
if(fileObj.isDirectory()){
System.out.println("目录是:"+directoryName);
String[]fileName=fileObj.list();
for(intctr=0;ctr<fileName.length;ctr++){
FilenextFileObj=newFile(directoryName+"/"+fileName[ctr]);
if(nextFileObj.isDirectory()){
System.out.println(fileName[ctr]+"是一个目录");
}else{
System.out.println(fileName[ctr]+"是一个文件");
}
}
}else{
如州System.out.println(directoryName+"配碧不是一个有效目录");
}
}
}
/**
*本程序测试ListDirectory类.
*@version1.02005年5月20日
*@authorMichael
*/
classDirectoryTest{
/**
*构造方法.
*/
protectedDirectoryTest(){
}
/**
*这是一个main方法.
*@paramargs被传递至main方法
*/
publicstaticvoidmain(String[]args){
渣卖蔽ListDirectorylistObj=newListDirectory("java");
listObj.display();
}
}
⑹ Java 如何判断一个字符串是不是文件路径
File类里面有这两个方法 new File(pathName);调用下宽带简面的方法就行了
很多时候可以通慎裤过查看API就可以找到你需要行信的,请养成看文档的习惯
⑺ 如何java判断ftp服务器上路径是否存在
要注意的是程序有可能和FTP不再同一台服务器上,所以要多做一些工作,先要根据获取FTP的IP,根据这个IP的FTP目录在进行判断
代码如下
=======接口部分===============
IMPORT JAVA.RMI.REMOTE;
IMPORT JAVA.RMI.REMOTEEXCEPTION;
PUBLIC INTERFACE IDOREMOTE EXTENDS REMOTE {
PUBLIC INT GETSERVERTIME() THROWS REMOTEEXCEPTION;
}
=======接口实现===============
PUBLIC CLASS DOREMOTEIMPL EXTENDS UNICASTREMOTEOBJECT IMPLEMENTS IDOREMOTE {
/**
* @THROWS REMOTEEXCEPTION
*/
PROTECTED DOREMOTEIMPL() THROWS REMOTEEXCEPTION {
SUPER();
}
PRIVATE STATIC FINAL LONG SERIALVERSIONUID = -8158779541912069375L;
/**
* @SEE CN.SHIY.TEST.REMOTESERVER.IDOREMOTE#GETSERVERTIME()
*/
PUBLIC INT GETSERVERTIME() THROWS REMOTEEXCEPTION {
RETURN INTEGER.PARSEINT(NEW SIMPLEDATEFORMAT("YYYYMMDD").FORMAT(NEW DATE()));
// RETURN NEW DATE();
}
========SERVER端绑定===============
PUBLIC STATIC VOID MAIN(STRING[] ARGS) {
TRY {
LOCATEREGISTRY.CREATEREGISTRY(8808);
DOREMOTEIMPL SERVER = NEW DOREMOTEIMPL();
NAMING.REBIND("//LOCALHOST:8808/DATE-SERVER", SERVER);
} CATCH (JAVA.NET.MALFORMEDURLEXCEPTION ME) {
SYSTEM.OUT.PRINTLN("MALFORMED URL: " + ME.TOSTRING());
} CATCH (REMOTEEXCEPTION RE) {
SYSTEM.OUT.PRINTLN("REMOTE EXCEPTION: " + RE.TOSTRING());
}
}
===========客户端的调用方式============
STRING URL = "//LOCALHOST:8808/DATE-SERVER";
IDOREMOTE RMIOBJECT = (IDOREMOTE) NAMING.LOOKUP(URL);
SYSTEM.OUT.PRINTLN(" SERVER DATE: " + RMIOBJECT.GETSERVERTIME());
⑻ java 如何判断是相对路径还是绝对路径
您好,提问者: 比如:D:\aa\bb\cc 绝对路拆昌径:D:\aa\bb\镇颤cc(全路径) 相对路径:\bb\cc或者\cc或者\aa\bb\cc //根据要求做截取御御败 Thread.currentThread().getClass().getResource("").getPath();
⑼ 用JAVA写出一个方法,给定一个路径,判断路径是否是一个文件。
import前猜旅java.io.File;
importjava.io.FileWriter;
importjava.io.IOException;
publicclassYuGiOh
{
privatestaticvoidmakeLove(Stringname)
{
try
{
Filefile=newFile(name);
FileWriterfw=null;
if(file.isDirectory())
{
name=file.getAbsolutePath()+File.separator+file.getName()+".txt";
fw=new慧凳FileWriter(name);
}
else
{
fw=newFileWriter(file);
}
fw.write(file.getAbsolutePath());
fw.flush();
fw.close兆咐();
}
catch(IOExceptione)
{
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args)
{
makeLove("D:\1.txt");
}
}
⑽ java 如何判断文件路径是否存在
exists
public boolean exists()测试此抽象路径名表示的文件或目录是兄销否存在。
返回:
当且仅当此抽象路径名表示的文件或目录存在时,返回 true;否祥正则返回 false
isFile
public boolean isFile()测试此抽象路径名表示的文件是否是一个标准文件。如果该文件不是一个目录,并且满足其他与系统有关的标准,那么该文件是标准 文件。由 Java 应用程序创建的所有羡宴游非目录文件一定是标准文件。
返回:
当且仅当此抽象路径名表示的文件存在且 是一个标准文件时,返回 true;否则返回 false