Java 复制一个文件到另外一个目录下
因为项目部署在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 复制一个文件到另外一个目录下的更多相关文章
- Java中删除文件、删除目录及目录下所有文件(转)
原文链接:Java中删除文件.删除目录及目录下所有文件 知识点:File.delete()用于删除“某个文件或者空目录”!所以要删除某个目录及其中的所有文件和子目录,要进行递归删除,具体代码示例如下: ...
- java中把文件拷贝到指定目录下最简单几种方法
java中把文件拷贝到指定目录下最简单几种方法 String savePath = "D:/file";// 文件保存到d盘的file目录下 File savefile = n ...
- [Java] 在 jar 文件中读取 resources 目录下的文件
注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...
- Java中删除文件、删除目录及目录下所有文件
转载自:http://www.cnblogs.com/eczhou/archive/2012/01/16/2323431.html 功能:删除某个目录及目录下的所有子目录和文件 知识点:File.de ...
- linux 下怎样查找一个文件夹在哪个目录下?
如果只显示所在目录的路径: find 目录 -type d -name "查询目录名" -printf "%h\n" 如果同时显示目录名称和所在目录的路径: f ...
- 在一个另一个文件中 #include一个**dlg.h文件,会发生dlg的资源ID未定义的错误 :
1 在一个另一个文件中 #include一个**dlg.h文件,会发生dlg的资源ID未定义的错误 : dlg1.h(23) : error C2065: 'IDD_DIALOG1' : und ...
- C# 将引用的DLL文件放到指定的目录下
原文:C# 将引用的DLL文件放到指定的目录下 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/sweety820/article/details/2 ...
- 关于DLL文件和EXE文件不在同一目录下的设置【转】
https://www.cnblogs.com/chaosimple/archive/2012/08/13/2636181.html 关于DLL文件和EXE文件不在同一目录下的设置 在开发程序结束后, ...
- Maven项目如何将自定义文件添加到META-INF目录下
Maven项目如何将自定义文件添加到META-INF目录下 学习了:https://blog.csdn.net/yangjiegreat/article/details/78698655 <bu ...
随机推荐
- 多线程Java面试题总结
57.Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别?答:sleep()方法(休眠)是线程类(Thread)的静态方法,调用此方法会让当前线程暂停执行指 ...
- 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred) Solution
A. Find a Number Solved By 2017212212083 题意:$找一个最小的n使得n % d == 0 并且 n 的每一位数字加起来之和为s$ 思路: 定义一个二元组$< ...
- echarts 不同区域背景色不同 废了我一天的时间
var result = echarts.init(document.getElementById('result')); var option1 = { title: { text: '设备阶段故障 ...
- mongodb-的副本集
复制的重要性不再多说,其主要就是提供数据保护,数据高可用和灾难恢复. 复制是跨多个mongodb服务器分布和维护的方法.mongodb可以把数据从一个节点复制到其他节点并在修改时进行同步. mongo ...
- STM32 DMA简述
STM32 DMA简述 DMA (Direct Memory Access) 直接内存存储器,在做数据传输时能够大大减轻CPU的负担. DMA的作用 DMA提供了一个关于数据的高数传输通道,这个通道不 ...
- Java判断字符串是否符合yyyyMMdd日期格式
Java判断字符串是否符合yyyyMMdd日期格式 代码: /** * 判断参数的格式是否为“yyyyMMdd”格式的合法日期字符串 * */ public static boolean isVali ...
- # 20145106 《Java程序设计》第2周学习总结
教材学习内容总结 感觉这本书的第三章和c语言有很多共同之处.因为以前学过c所以看起来并没有十分费劲.虽然以前学习过c, 但是还是忘记了long整数占8个字节这件事情.另外我第一次接触布尔这个概念.了解 ...
- target='_blank' 安全漏洞
有关 target="_blank" 的安全缺陷 可能大家在写网页的时候经常给超链接加个属性 target="_blank",意思就是在浏览器新的窗口打开此超链 ...
- 【问题解决:未找到端口号】启动报错Circular placeholder reference 'server.port' in property definitions
问题描述: 启动spring boot项目时报错:Circular placeholder reference 'server.port' in property definitions 解决过程: ...
- [bug report] 当springboot报错 找不到类 javax.xml.bind.JAXBException
<!--以下四个依赖均是javax.xml.bind.JAXBException的依赖 在java6/7/8默认支持,java9不再支持--> <dependency> < ...