因为项目部署在jboss上面,在上传一些图片的时候,把他上传到当前项目的下,比如:(这里是以Windows服务器为例的,当然linux也是一样的)

D:\jboss-eap-6.4\domain\servers\8080\tmp\vfs\temp\temp5e9f137492dc6baa\content-295f90957d15c1af

这个路径当你再次部署jboss的时候,他就会把后面红色标记的目录给重新生成一下且存在这些目录下的文件都会被删掉,所以当时想把图片利用:

String savePath = request.getSession().getServletContext().getRealPath("");

得到当前项目所在的物理磁盘路径,存储到其中的方法是不好实现的。之后有想到了在服务器上面部属个ftp,把图片什么都存储到ftp上面,然后把ftp的存储路径放到数据库中,这个方法是可行的,但是有的时候ftp服务器跟程序的应用服务器是分开的,所以当ftp服务器当机的时候,图片就存储不到了。然后就想到了把图片存储到jboss的根目录下的某个文件夹下,

  String tempPath = System.getProperty("user.dir");

当成一个中转站,如果重新部署了war包,使得图片没有了,再从中转的目录中复制过来,主要的代码如下:

        String saveName = dto.getDiplomatIdentity();  //从数据库中得到存储的相对路径
String tempPath = System.getProperty("user.dir");
String savePath = request.getSession().getServletContext().getRealPath(""); //中转站路径中的文件
File tempPathFile = new File(tempPath + "\\" + saveName);
//项目的相对路径(目录)
File savePathFile = new File(savePath + "\\resources\\acs_imgs\\shipper\\");
//如果当前项目对于的相对路径下没有对应的图片。就从中转目录下拷贝一份,有的话就跳过此方法
// 如果中转目录下都没有文件,那么直接跳过。
File imgFile = new File(savePath + "\\" + saveName); if (!imgFile.exists()) {
if (tempPathFile.exists()) {
//当前项目的相对路径没有对应的目录,新建
if (!savePathFile.exists()) {
savePathFile.mkdirs();
}
//得到中转目录的 文件流
FileInputStream fis = new FileInputStream(tempPath + "\\" + saveName);
//输出到 当前目录下
FileOutputStream fos = new FileOutputStream(savePath + "\\" + saveName);
int len = 0;
byte[] buf = new byte[1024];
while ((len = fis.read(buf)) != -1) {
fos.write(buf, 0, len);
}
fis.close();
fos.close();
}
}

当然File文件的操作,有个File#renameTo(File)方法,这个方法也是可行的,但是有的时候,他会出现小小的问题即:

不同盘符的分区格式不同,之间互相用File#renameTo(File)方法的时候,有可能会不成功的,具体看 http://xiaoych.iteye.com/blog/149328  和 http://www.iteye.com/topic/149328

Java 复制一个文件到另外一个目录下的更多相关文章

  1. Java中删除文件、删除目录及目录下所有文件(转)

    原文链接:Java中删除文件.删除目录及目录下所有文件 知识点:File.delete()用于删除“某个文件或者空目录”!所以要删除某个目录及其中的所有文件和子目录,要进行递归删除,具体代码示例如下: ...

  2. java中把文件拷贝到指定目录下最简单几种方法

    java中把文件拷贝到指定目录下最简单几种方法   String savePath = "D:/file";// 文件保存到d盘的file目录下 File savefile = n ...

  3. [Java] 在 jar 文件中读取 resources 目录下的文件

    注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...

  4. Java中删除文件、删除目录及目录下所有文件

    转载自:http://www.cnblogs.com/eczhou/archive/2012/01/16/2323431.html 功能:删除某个目录及目录下的所有子目录和文件 知识点:File.de ...

  5. linux 下怎样查找一个文件夹在哪个目录下?

    如果只显示所在目录的路径: find 目录 -type d -name "查询目录名" -printf "%h\n" 如果同时显示目录名称和所在目录的路径: f ...

  6. 在一个另一个文件中 #include一个**dlg.h文件,会发生dlg的资源ID未定义的错误 :

    1    在一个另一个文件中 #include一个**dlg.h文件,会发生dlg的资源ID未定义的错误 : dlg1.h(23) : error C2065: 'IDD_DIALOG1' : und ...

  7. C# 将引用的DLL文件放到指定的目录下

    原文:C# 将引用的DLL文件放到指定的目录下 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/sweety820/article/details/2 ...

  8. 关于DLL文件和EXE文件不在同一目录下的设置【转】

    https://www.cnblogs.com/chaosimple/archive/2012/08/13/2636181.html 关于DLL文件和EXE文件不在同一目录下的设置 在开发程序结束后, ...

  9. Maven项目如何将自定义文件添加到META-INF目录下

    Maven项目如何将自定义文件添加到META-INF目录下 学习了:https://blog.csdn.net/yangjiegreat/article/details/78698655 <bu ...

随机推荐

  1. RDD, DataFrame or Dataset

    总结: 1.RDD是一个Java对象的集合.RDD的优点是更面向对象,代码更容易理解.但在需要在集群中传输数据时需要为每个对象保留数据及结构信息,这会导致数据的冗余,同时这会导致大量的GC. 2.Da ...

  2. 用Python实现的数据结构与算法:双端队列

    一.概述 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的线性数据结构.双端队列也拥有两端:队首(front).队尾(rear),但与队列不同的是,插入操作在两 ...

  3. mysql数据库访问权限限制设置

    ---只能本地访问,设置随意访问 update user set host='%' where host='localhost': flush privileges; ---随意访问,设置只能本地访问 ...

  4. Linux /proc/pid目录下各文件含义

    /proc 是一个伪文件系统, 被用作内核数据结构的接口, 而不仅仅是解释说明/dev/kmem. /proc 里的大多数文件都是只读的, 但也可以通过写一些文件来改变内核变量. ( Linux 内核 ...

  5. FM/AM收音机原理

    收音机这东西很早就开始用了,但一直都没有了解过它的原理,听说是很简单.下面记录一些笔记. 1. 基本概念 收音机是一种小型的无线电接收机,主要用于接受无线电广播节目,收听无线电发射台.首先说一下收音机 ...

  6. 几种Memcache的状态监控的工具,以及安装和使用【linux系统】

    1.Memcache-top的简介及安装和用法 简介:memcache-top是用perl语言编写的,可以运行在term下.它能够像top一样显示各个memcached节点的状态变化,其中包括系统管理 ...

  7. 如何使用STM32F4的BootLoader和APP程序

    源:如何使用STM32F4的BootLoader和APP程序 STM32 BootLoader升级固件

  8. P1879 [USACO06NOV]玉米田Corn Fields(状压dp)

    P1879 [USACO06NOV]玉米田Corn Fields 状压dp水题 看到$n,m<=12$,肯定是状压鸭 先筛去所有不合法状态,蓝后用可行的状态跑一次dp就ok了 #include& ...

  9. (转载)找圆算法((HoughCircles)总结与优化

      Opencv内部提供了一个基于Hough变换理论的找圆算法,HoughCircle与一般的拟合圆算法比起来,各有优势:优势:HoughCircle对噪声点不怎么敏感,并且可以在同一个图中找出多个圆 ...

  10. What's the difference between SDK and Runtime in .NET Core?

    What's the difference between SDK and Runtime in .NET Core? Answer1 According to the .Net Core Guide ...