java获取当前目录路径

java获取当前目录路径,第1张

很多朋友都想知道java如何获取当前目录路径?下面就一起来了解一下吧~

1、利用SystemgetProperty()函数获取当前路径:

Systemoutprintln(SystemgetProperty("userdir"));//userdir指定了当前的路径

2、使用File提供的函数获取当前路径:

File directory = new File("");//设定为当前文件夹 try{ Systemoutprintln(directorygetCanonicalPath());//获取标准的路径 Systemoutprintln(directorygetAbsolutePath());//获取绝对路径 }catch(Exceptin e){} FilegetCanonicalPath()和FilegetAbsolutePath()大约只是对于new File("")和new File("")两种路径有所区别。 # 对于getCanonicalPath()函数,“"就表示当前的文件夹,而”“则表示当前文件夹的上一级文件夹 # 对于getAbsolutePath()函数,则不管””、“”,返回当前的路径加上你在new File()时设定的路径 # 至于getPath()函数,得到的只是你在new File()时设定的路径 比如当前的路径为 C:/test : File directory = new File("abc"); directorygetCanonicalPath(); //得到的是C:/test/abc directorygetAbsolutePath(); //得到的是C:/test/abc direcotrygetPath(); //得到的是abc File directory = new File(""); directorygetCanonicalPath(); //得到的是C:/test directorygetAbsolutePath(); //得到的是C:/test/ direcotrygetPath(); //得到的是 File directory = new File(""); directorygetCanonicalPath(); //得到的是C:/ directorygetAbsolutePath(); //得到的是C:/test/ direcotrygetPath(); //得到的是 另外:SystemgetProperty()中的字符串参数如下: SystemgetProperty()参数大全 # javaversion Java Runtime Environment version # javavendor Java Runtime Environment vendor # javavendorurl Java vendor URL # javahome Java installation directory # javavmspecificationversion Java Virtual Machine specification version # javavmspecificationvendor Java Virtual Machine specification vendor # javavmspecificationname Java Virtual Machine specification name # javavmversion Java Virtual Machine implementation version # javavmvendor Java Virtual Machine implementation vendor # javavmname Java Virtual Machine implementation name # javaspecificationversion Java Runtime Environment specification version # javaspecificationvendor Java Runtime Environment specification vendor # javaspecificationname Java Runtime Environment specification name # javaclassversion Java class format version number # javaclasspath Java class path # javalibrarypath List of paths to search when loading libraries # javaiotmpdir Default temp file path # javacompiler Name of JIT compiler to use # javaextdirs Path of extension directory or directories # osname Operating system name # osarch Operating system architecture # osversion Operating system version # fileseparator File separator ("/" on UNIX) # pathseparator Path separator (":" on UNIX) # lineseparator Line separator ("/n" on UNIX) # username User’s account name # userhome User’s home directory # userdir User’s current working directory

JAVA中获取路径 关键字: java中获取路径

1、jsp中取得路径:

以工程名为TEST为例:

(1)得到包含工程名的当前页面全路径:requestgetRequestURI() 结果:/TEST/testjsp (2)得到工程名:requestgetContextPath() 结果:/TEST (3)得到当前页面所在目录下全名称:requestgetServletPath() 结果:如果页面在jsp目录下 /TEST/jsp/testjsp (4)得到页面所在服务器的全路径:applicationgetRealPath("页面jsp") 结果:D:/resin/webapps/TEST/testjsp (5)得到页面所在服务器的绝对路径:absPath=new javaioFile(applicationgetRealPath(requestgetRequestURI()))getParent(); 结果:D:/resin/webapps/TEST

2、在类中取得路径: (1)类的绝对路径:ClassclassgetClass()getResource("/")getPath() 结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/ (2)得到工程的路径:SystemgetProperty("userdir") 结果:D:/TEST

静态方法不与特定实例关联,不能引用this,要得到当前类名,没有直接的办法。

通过查资料和试验,可以用下面几种方式:

public static void testGetClassName()

{

// 方法1:通过SecurityManager的保护方法getClassContext()

String clazzName = new SecurityManager()

{ public String getClassName()

{

return getClassContext()[1]getName();

}

}getClassName();

Systemoutprintln(clazzName);

// 方法2:通过Throwable的方法getStackTrace()

String clazzName2 = new Throwable()getStackTrace()[1]getClassName();

Systemoutprintln(clazzName2);

// 方法3:通过分析匿名类名称()

String clazzName3 = new Object() {

public String getClassName()

{

String clazzName = thisgetClass()getName();

return clazzNamesubstring(0, clazzNamelastIndexOf('$'));

}

}getClassName();

Systemoutprintln(clazzName3);

}

分别调用10万次,

方法1:219ms

方法2:953ms

方法3:31ms

这是不可能的,static方法不隶属于任何类/对象,所以无从获取。static的内容由JVM统一管理,甚至都不在堆上

看了你的补充说明。如果是想知道本静态方法在哪个类被实现真的不可行,你的程序设计有错误。如果你是想读取工作目录下的一个文件,你只能知道改工作目录的磁盘路径,而文件名(类名)必须手工写明,无法自动获取。

这个一般在内部类里面用。。类名this表示 那个类名所代表的类的对象。。。

比如class A {

public void method(){

Athis就是表示A的对象。。在这种情况下和this是一样的

}

class B {

void method1() {

Athis还是表示A的对象。。但是这里是在内部类里面。。所以这里的this就是内部类B的对象了。。但是我们经常会在内部类里面调用外部的东西。。所以就用Athis这种方式就行了

}

}

}

1 用servlet获取

11 获取项目的绝对路径

requestgetSession()getServletContext()getRealPath("")

12 获取浏览器地址

requestgetRequestURL()

13 获取当前文件的绝对路径

requestgetSession()getServletContext()getRealPath(requestgetRequestURI())

2获取当前的classpath路径

String a2=类名classgetResource("")toString();

String a3=DBConnectionclassgetResource("/")toString();

String a4=DBConnectionclassgetClassLoader()getResource("")toString();

String t=ThreadcurrentThread()getContextClassLoader()getResource("")getPath();

//输出很好理解

3、获取文件的绝对路径

String t=ThreadcurrentThread()getContextClassLoader()getResource("")getPath();

int num=tindexOf("metadata");

String path=tsubstring(1,num)replace('/', '\\')+"项目名\\WebContent\\文件";

Foible 朋友的说法不对。

B b=new B(); 这种方式,实际上是实例化了子类的对象,注意:内存中还是子类对象。

((A)b)m(); 表面上看起来是父类对象了,但是由于内存中是子类对象,所以调用的还是子类方法。

A b=new B();

bm();

这种方法和你写的实际是一个效果,虽然上溯造型到了父类,由于子类重写了父类的方法,调用的还是子类的方法(也就是所:方法的实现,最后是在子类中实现的)。

所以,总结如下:

如果子类没有重写父类的方法,调用父类的方法的时候,实际上是去父类的内存中实现,可以调用父类方法。

如果子类重写了父类的方法,那么,你虽然上溯造型到了父类,由于内存还是子类,该方法的实现还是在子类,所以用实例化的对象是调用不到父类的,这种情况下,只能用super关键字。

用static的情况不讨论的情况下不讨论是这样的,不知道到您是否不满意,不满意的话可以发消息继续讨论。

@Retention(RetentionPolicyRUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到

@Target({ElementTypeFIELD,ElementTypeMETHOD})//定义注解的作用目标作用范围字段、枚举的常量/方法

@Documented//说明该注解将被包含在javadoc中

public @interface FieldMeta {

/

是否为序列号

@return

/

boolean id() default false;

/

字段名称

@return

/

String name() default "";

/

是否可编辑

@return

/

boolean editable() default true;

/

以上就是关于java获取当前目录路径全部的内容,包括:java获取当前目录路径、java如何获取内部静态类变量、Java代码中,如何在静态(由static关键字修饰)方法或静态代码块中(static{})获取当前类的位置。。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9720192.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存