×

java获取服务器路径

java获取服务器路径(Java获取当前路径的几种方法)

admin admin 发表于2022-09-07 05:09:41 浏览413 评论0

抢沙发发表评论

本文目录

Java获取当前路径的几种方法


1、利用System.getProperty()函数获取当前路径:
System.out.println(System.getProperty(“user.dir“));//user.dir指定了当前的路径
2、使用File提供的函数获取当前路径:
File directory = new File(““);//设定为当前文件夹
try{
System.out.println(directory.getCanonicalPath());//获取标准的路径
System.out.println(directory.getAbsolutePath());//获取绝对路径
}catch(Exceptin e){}
File.getCanonicalPath()和File.getAbsolutePath()大约只是对于new File(“.“)和new File(“..“)两种路径有所区别。
# 对于getCanonicalPath()函数,“.“就表示当前的文件夹,而”..“则表示当前文件夹的上一级文件夹
# 对于getAbsolutePath()函数,则不管”.”、“..”,返回当前的路径加上你在new File()时设定的路径
# 至于getPath()函数,得到的只是你在new File()时设定的路径
比如当前的路径为 C:/test :
File directory = new File(“abc“);
directory.getCanonicalPath(); //得到的是C:/test/abc
directory.getAbsolutePath(); //得到的是C:/test/abc
direcotry.getPath(); //得到的是abc
File directory = new File(“.“);
directory.getCanonicalPath(); //得到的是C:/test
directory.getAbsolutePath(); //得到的是C:/test/.
direcotry.getPath(); //得到的是.
File directory = new File(“..“);
directory.getCanonicalPath(); //得到的是C:/
directory.getAbsolutePath(); //得到的是C:/test/..
direcotry.getPath(); //得到的是..
另外:System.getProperty()中的字符串参数如下:
System.getProperty()参数大全
# java.version Java Runtime Environment version
# java.vendor Java Runtime Environment vendor
# java.vendor.url Java vendor URL
# java.home Java installation directory
# java.vm.specification.version Java Virtual Machine specification version
# java.vm.specification.vendor Java Virtual Machine specification vendor
# java.vm.specification.name Java Virtual Machine specification name
# java.vm.version Java Virtual Machine implementation version
# java.vm.vendor Java Virtual Machine implementation vendor
# java.vm.name Java Virtual Machine implementation name
# java.specification.version Java Runtime Environment specification version
# java.specification.vendor Java Runtime Environment specification vendor
# java.specification.name Java Runtime Environment specification name
# java.class.version Java class format version number
# java.class.path Java class path
# java.library.path List of paths to search when loading libraries
# java.io.tmpdir Default temp file path
# java.compiler Name of JIT compiler to use
# java.ext.dirs Path of extension directory or directories
# os.name Operating system name
# os.arch Operating system architecture
# os.version Operating system version
# file.separator File separator (“/“ on UNIX)
# path.separator Path separator (“:“ on UNIX)
# line.separator Line separator (“/n“ on UNIX)
# user.name User’s account name
# user.home User’s home directory
# user.dir User’s current working directory
JAVA中获取路径:
1.jsp中取得路径:
以工程名为TEST为例:
(1)得到包含工程名的当前页面全路径:request.getRequestURI()
结果:/TEST/test.jsp
(2)得到工程名:request.getContextPath()
结果:/TEST
(3)得到当前页面所在目录下全名称:request.getServletPath()
结果:如果页面在jsp目录下 /TEST/jsp/test.jsp
(4)得到页面所在服务器的全路径:application.getRealPath(“页面.jsp“)
结果:D:/resin/webapps/TEST/test.jsp
(5)得到页面所在服务器的绝对路径:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
结果:D:/resin/webapps/TEST
2.在类中取得路径:
(1)类的绝对路径:Class.class.getClass().getResource(“/“).getPath()
结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
(2)得到工程的路径:System.getProperty(“user.dir“)
结果:D:/TEST
3.在Servlet中取得路径:
(1)得到工程目录:request.getSession().getServletContext().getRealPath(““) 参数可具体到包名。
结果:E:/Tomcat/webapps/TEST
(2)得到IE地址栏地址:request.getRequestURL()
结果:http://localhost:8080/TEST/test
(3)得到相对地址:request.getRequestURI()
结果:/TEST/test

Java中路径的获取总结以及URL和URI的区别


路径获取分直接写死在代码上和动态获取路径。直接写死就不说了,动态获取方法很多最常用的../和${pageContext.request.contextPath},获取路径可以用getClass().getResource()。URl和URL一个是相对路径一个是绝对路径,比如相对路径和你同包的你直接写对象(类,各种格式文件)名字就行,绝对路径就是你的项目名+包+你的应用名。

java中怎样获取当前路径的绝对路径


在jsp和class文件中调用的相对路径不同。在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty(“user.dir“)获取工程的绝对路径。
另:在Jsp,Servlet,Java中详细获得路径的方法!
1.jsp中取得路径:
以工程名为TEST为例:
(1)得到包含工程名的当前页面全路径:request.getRequestURI()
结果:/TEST/test.jsp
(2)得到工程名:request.getContextPath()
结果:/TEST
(3)得到当前页面所在目录下全名称:request.getServletPath()
结果:如果页面在jsp目录下 /TEST/jsp/test.jsp
(4)得到页面所在服务器的全路径:application.getRealPath(“页面.jsp“)
结果:D:\resin\webapps\TEST\test.jsp
(5)得到页面所在服务器的绝对路径:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
结果:D:\resin\webapps\TEST
2.在类中取得路径:
(1)类的绝对路径:Class.class.getClass().getResource(“/“).getPath()
结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
(2)得到工程的路径:System.getProperty(“user.dir“)
结果:D:\TEST
3.在Servlet中取得路径:
(1)得到工程目录:request.getSession().getServletContext().getRealPath(““) 参数可具体到包名。
结果:E:\Tomcat\webapps\TEST
(2)得到IE地址栏地址:request.getRequestURL()
结果:http://localhost:8080/TEST/test
(3)得到相对地址:request.getRequestURI()
结果:/TEST/test
-java获取服务器路径

求教java web 在服务器上获取路径问题


Java取得web工程目录获取方法:

  1. 可以在servlet的init方法里

  2. String path = getServletContext().getRealPath(“/“);

  3. 这将获取web项目的全路径

  4. 例如 :E:\eclipseM9\workspace\tree\

  5. tree是web项目的根目录

  6. 2.也可以随时在任意的class里调用:

  7. this.getClass().getClassLoader().getResource(“/“).getPath();

  8. 这将获取到classes目录的全路径

  9. 例如 : E:\eclipseM9/workspace/tree/WEB-INF/classes/

  10. 这个方法也可以不在web环境里确定路径。


java怎么取出linux服务器的文件路径


java可以获取当前项目的路径, Class.class.getClass().getResource(“/“).getPath()
这个是有请求的情况下,request.getSession().getServletContext().getRealPath(““)
-java获取服务器路径

java中action如何获得客户端文件的路径


1.基本概念的理解
绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:
C:/xyz/test.txt 代表了test.txt文件的绝对路径。
(2).Tomcat
在类中输出System.getProperty(“user.dir“);显示的是%Tomcat_Home%/bin
(3).Resin
不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成SERVLET
的路径为根.比如用新建文件法测试File f = new File(“a.htm“);
这个a.htm在resin的安装目录下
-java获取服务器路径

java怎么取到web服务的根路径


java获取根路径有两种方式:
1)在servlet可以用一下方法取得:
request.getRealPath(“/”)
例如:filepach = request.getRealPath(“/”)+”//upload//”;
2)不从jsp,或servlet中获取,只从普通java类中获取:
String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
SAXReader() saxReader = new SAXReader();
if(path.indexOf(“WEB-INF”)》0){
path = path.substring(0,path.indexOf(“/WEB-INF/classes”)+16);
// ‘/WEB-INF/classes’为16位
document = saxReader.read(path+filename);
}else{
document = saxReader.read(getClass().getResourceAsStream(filename));
}
-java获取服务器路径

java中怎么把文件上传到服务器的指定路径


string
realpath
=
servletactioncontext.getservletcontext().getrealpath(“/upload“)
;//获取服务器路径
string
targetfilename
=
uploadfilename;
for
(int
i
=
0;
i

upload.length;
i++)
{
file
target
=
new
file(realpath,
targetfilename[i]);
fileutils.copyfile(upload[i],
target);
//这是一个文件复制类copyfile()里面就是io操作,如果你不用这个类也可以自己写一个io复制文件的类
}
其中private
file
upload;//
实际上传文件
private
string
uploadcontenttype;
//
文件的内容类型
private
string
uploadfilename;
//
上传文件名
这三个参数必须这样命名,因为文件上传控件默认是封装了这3个参数的,且在action里面他们应有get,set方法
-java获取服务器路径

java获取ftp文件路径怎么写


  package com.weixin.util;
  
  import java.io.File;
  import java.io.FileOutputStream;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.OutputStream;
  import java.io.PrintWriter;
  import java.io.RandomAccessFile;
  
  import org.apache.commons.net.PrintCommandListener;
  import org.apache.commons.net.ftp.FTP;
  import org.apache.commons.net.ftp.FTPClient;
  import org.apache.commons.net.ftp.FTPFile;
  import org.apache.commons.net.ftp.FTPReply;
  
  import com.weixin.constant.DownloadStatus;
  import com.weixin.constant.UploadStatus;
  
  /**
  * 支持断点续传的FTP实用类
  * @version 0.1 实现基本断点上传下载
  * @version 0.2 实现上传下载进度汇报
  * @version 0.3 实现中文目录创建及中文文件创建,添加对于中文的支持
  */
  public class ContinueFTP {
  public FTPClient ftpClient = new FTPClient();
  
  public ContinueFTP(){
  //设置将过程中使用到的命令输出到控制台
  this.ftpClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
  }
  
  /**
  * 连接到FTP服务器
  * @param hostname 主机名
  * @param port 端口
  * @param username 用户名
  * @param password 密码
  * @return 是否连接成功
  * @throws IOException
  */
  public boolean connect(String hostname,int port,String username,String password) throws IOException{
  ftpClient.connect(hostname, port);
  ftpClient.setControlEncoding(“GBK“);
  if(FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){
  if(ftpClient.login(username, password)){
  return true;
  }
  }
  disconnect();
  return false;
  }
  
  /**
  * 从FTP服务器上下载文件,支持断点续传,上传百分比汇报
  * @param remote 远程文件路径
  * @param local 本地文件路径
  * @return 上传的状态
  * @throws IOException
  */
  public DownloadStatus download(String remote,String local) throws IOException{
  //设置被动模式
  ftpClient.enterLocalPassiveMode();
  //设置以二进制方式传输
  ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
  DownloadStatus result;
  
  //检查远程文件是否存在
  FTPFile files = ftpClient.listFiles(new String(remote.getBytes(“GBK“),“iso-8859-1“));
  if(files.length != 1){
  System.out.println(“远程文件不存在“);
  return DownloadStatus.Remote_File_Noexist;
  }
  
  long lRemoteSize = files.getSize();
  File f = new File(local);
  //本地存在文件,进行断点下载
  if(f.exists()){
  long localSize = f.length();
  //判断本地文件大小是否大于远程文件大小
  if(localSize 》= lRemoteSize){
  System.out.println(“本地文件大于远程文件,下载中止“);
  return DownloadStatus.Local_Bigger_Remote;
  }
  
  //进行断点续传,并记录状态
  FileOutputStream out = new FileOutputStream(f,true);
  ftpClient.setRestartOffset(localSize);
  InputStream in = ftpClient.retrieveFileStream(new String(remote.getBytes(“GBK“),“iso-8859-1“));
  byte bytes = new byte;
  long step = lRemoteSize /100;
  long process=localSize /step;
  int c;
  while((c = in.read(bytes))!= -1){
  out.write(bytes,0,c);
  localSize+=c;
  long nowProcess = localSize /step;
  if(nowProcess 》 process){
  process = nowProcess;
  if(process % 10 == 0)
  System.out.println(“下载进度:“+process);
  //TODO 更新文件下载进度,值存放在process变量中
  }
  }
  in.close();
  out.close();
  boolean isDo = ftpClient.completePendingCommand();
  if(isDo){
  result = DownloadStatus.Download_From_Break_Success;
  }else {
  result = DownloadStatus.Download_From_Break_Failed;
  }
  }else {
  OutputStream out = new FileOutputStream(f);
  InputStream in= ftpClient.retrieveFileStream(new String(remote.getBytes(“GBK“),“iso-8859-1“));
  byte bytes = new byte;
  long step = lRemoteSize /100;
  long process=0;
  long localSize = 0L;
  int c;
  while((c = in.read(bytes))!= -1){
  out.write(bytes, 0, c);
  localSize+=c;
  long nowProcess = localSize /step;
  if(nowProcess 》 process){
  process = nowProcess;
  if(process % 10 == 0)
  System.out.println(“下载进度:“+process);
  //TODO 更新文件下载进度,值存放在process变量中
  }
  }
  in.close();
  out.close();
  boolean upNewStatus = ftpClient.completePendingCommand();
  if(upNewStatus){
  result = DownloadStatus.Download_New_Success;
  }else {
  result = DownloadStatus.Download_New_Failed;
  }
  }
  return result;
  }
  
  /**
  * 上传文件到FTP服务器,支持断点续传
  * @param local 本地文件名称,绝对路径
  * @param remote 远程文件路径,使用/home/directory1/subdirectory/file.ext 按照Linux上的路径指定方式,支持多级目录嵌套,支持递归创建不存在的目录结构
  * @return 上传结果
  * @throws IOException
  */
  public UploadStatus upload(String local,String remote) throws IOException{
  //设置PassiveMode传输
  ftpClient.enterLocalPassiveMode();
  //设置以二进制流的方式传输
  ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
  ftpClient.setControlEncoding(“GBK“);
  UploadStatus result;
  //对远程目录的处理
  String remoteFileName = remote;
  if(remote.contains(“/“)){
  remoteFileName = remote.substring(remote.lastIndexOf(“/“)+1);
  //创建服务器远程目录结构,创建失败直接返回
  if(CreateDirecroty(remote, ftpClient)==UploadStatus.Create_Directory_Fail){
  return UploadStatus.Create_Directory_Fail;
  }
  }
  
  //检查远程是否存在文件
  FTPFile files = ftpClient.listFiles(new String(remoteFileName.getBytes(“GBK“),“iso-8859-1“));
  if(files.length == 1){
  long remoteSize = files.getSize();
  File f = new File(local);
  long localSize = f.length();
  if(remoteSize==localSize){
  return UploadStatus.File_Exits;
  }else if(remoteSize 》 localSize){
  return UploadStatus.Remote_Bigger_Local;
  }
  
  //尝试移动文件内读取指针,实现断点续传
  result = uploadFile(remoteFileName, f, ftpClient, remoteSize);
  
  //如果断点续传没有成功,则删除服务器上文件,重新上传
  if(result == UploadStatus.Upload_From_Break_Failed){
  if(!ftpClient.deleteFile(remoteFileName)){
  return UploadStatus.Delete_Remote_Faild;
  }
  result = uploadFile(remoteFileName, f, ftpClient, 0);
  }
  }else {
  result = uploadFile(remoteFileName, new File(local), ftpClient, 0);
  }
  return result;
  }
  /**
  * 断开与远程服务器的连接
  * @throws IOException
  */
  public void disconnect() throws IOException{
  if(ftpClient.isConnected()){
  ftpClient.disconnect();
  }
  }
  
  /**
  * 递归创建远程服务器目录
  * @param remote 远程服务器文件绝对路径
  * @param ftpClient FTPClient对象
  * @return 目录创建是否成功
  * @throws IOException
  */
  public UploadStatus CreateDirecroty(String remote,FTPClient ftpClient) throws IOException{
  UploadStatus status = UploadStatus.Create_Directory_Success;
  String directory = remote.substring(0,remote.lastIndexOf(“/“)+1);
  if(!directory.equalsIgnoreCase(“/“)&&!ftpClient.changeWorkingDirectory(new String(directory.getBytes(“GBK“),“iso-8859-1“))){
  //如果远程目录不存在,则递归创建远程服务器目录
  int start=0;
  int end = 0;
  if(directory.startsWith(“/“)){
  start = 1;
  }else{
  start = 0;
  }
  end = directory.indexOf(“/“,start);
  while(true){
  String subDirectory = new String(remote.substring(start,end).getBytes(“GBK“),“iso-8859-1“);
  if(!ftpClient.changeWorkingDirectory(subDirectory)){
  if(ftpClient.makeDirectory(subDirectory)){
  ftpClient.changeWorkingDirectory(subDirectory);
  }else {
  System.out.println(“创建目录失败“);
  return UploadStatus.Create_Directory_Fail;
  }
  }
  
  start = end + 1;
  end = directory.indexOf(“/“,start);
  
  //检查所有目录是否创建完毕
  if(end 《= start){
  break;
  }
  }
  }
  return status;
  }
  
  /**
  * 上传文件到服务器,新上传和断点续传
  * @param remoteFile 远程文件名,在上传之前已经将服务器工作目录做了改变
  * @param localFile 本地文件File句柄,绝对路径
  * @param processStep 需要显示的处理进度步进值
  * @param ftpClient FTPClient引用
  * @return
  * @throws IOException
  */
  public UploadStatus uploadFile(String remoteFile,File localFile,FTPClient ftpClient,long remoteSize) throws IOException{
  UploadStatus status;
  //显示进度的上传
  long step = localFile.length() / 100;
  long process = 0;
  long localreadbytes = 0L;
  RandomAccessFile raf = new RandomAccessFile(localFile,“r“);
  OutputStream out = ftpClient.appendFileStream(new String(remoteFile.getBytes(“GBK“),“iso-8859-1“));
  //断点续传
  if(remoteSize》0){
  ftpClient.setRestartOffset(remoteSize);
  process = remoteSize /step;
  raf.seek(remoteSize);
  localreadbytes = remoteSize;
  }
  byte bytes = new byte;
  int c;
  while((c = raf.read(bytes))!= -1){
  out.write(bytes,0,c);
  localreadbytes+=c;
  if(localreadbytes / step != process){
  process = localreadbytes / step;
  System.out.println(“上传进度:“ + process);
  //TODO 汇报上传状态
  }
  }
  out.flush();
  raf.close();
  out.close();
  boolean result =ftpClient.completePendingCommand();
  if(remoteSize 》 0){
  status = result?UploadStatus.Upload_From_Break_Success:UploadStatus.Upload_From_Break_Failed;
  }else {
  status = result?UploadStatus.Upload_New_File_Success:UploadStatus.Upload_New_File_Failed;
  }
  return status;
  }
  
  public static void main(String args) {
  ContinueFTP myFtp = new ContinueFTP();
  try {
  System.err.println(myFtp.connect(“10.10.6.236“, 21, “5“, “jieyan“));
  // myFtp.ftpClient.makeDirectory(new String(“歌曲“.getBytes(“GBK“),“iso-8859-1“));
  // myFtp.ftpClient.changeWorkingDirectory(new String(“歌曲“.getBytes(“GBK“),“iso-8859-1“));
  // myFtp.ftpClient.makeDirectory(new String(“爱你等于爱自己“.getBytes(“GBK“),“iso-8859-1“));
  // System.out.println(myFtp.upload(“E:\\yw.flv“, “/yw.flv“,5));
  // System.out.println(myFtp.upload(“E:\\爱你等于爱自己.mp4“,“/爱你等于爱自己.mp4“));
  //System.out.println(myFtp.download(“/爱你等于爱自己.mp4“, “E:\\爱你等于爱自己.mp4“));
  myFtp.disconnect();
  } catch (IOException e) {
  System.out.println(“连接FTP出错:“+e.getMessage());
  }
  }
  }
-java获取服务器路径

如何通过Java代码获取tomcat服务器的绝对路径


可以通过“ 类名.class.getResource(““).getPath()”方法实现。
举例:”String path = XMLS.class.getResource(““).getPath()“.
解释:以上语句就是获取到XMLS编译后的绝对路径(无法获取到java文件路径的,因为java运行的都是class文件)
-java获取服务器路径