望楼主理解,我也是java学习中。一起加油了。
需要先【存在】文件夹,才能再创建文件。当然,如果文件夹【不存在】,那么就需要先创建文件夹,再创建文件
比如 : c盘已经存在,所以才能创建C盘下的文件
1
2
File file = new File("c:\\abc.txt")
file.createNewFile()//创建文件
1
2
File file = new File("c:\\test\\abc.txt")
file.createNewFile()//创建文件
如果文件夹不存在会出现异常
1
2
Exception in thread "main" java.io.IOException: 系统找不到指定的路径。
at java.io.WinNTFileSystem.createFileExclusively
解决办法,先创建文件夹,在创建文件
1
2
3
4
5
File file = new File("c:\\test\\abc.txt")
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs()//创建"c:\\test"文件夹
}
file.createNewFile()//创建c:\\test\\abc.txt文件
描述较为简略,如有疑问可追答public static void main(String[] s){
move(new File("源文件夹"), new File("需要移动到的文件夹"))
}
/**
* 将文件(夹)移动到令一个文件夹
*/
public static void move(File resFile, File objFolderFile, boolean flag)
throws IOException {
copy(resFile, objFolderFile, flag)
delete(resFile)
}
/**
* 复制文件(夹)到一个目标文件夹
*
* @param resFile
*源文件(夹)
* @param objFolderFile
*目标文件夹
*/
public static void copy(File resFile, File objFolderFile, boolean flag)
throws IOException {
if (!resFile.exists())
return
if (!objFolderFile.exists())
objFolderFile.mkdirs()
if (resFile.isFile()) {
File objFile = new File(objFolderFile.getPath() + File.separator
+ resFile.getName())
// 复制文件到目标地
InputStream ins = new FileInputStream(resFile)
FileOutputStream outs = new FileOutputStream(objFile)
byte[] buffer = new byte[1024 * 512]
int length
while ((length = ins.read(buffer)) != -1) {
outs.write(buffer, 0, length)
}
ins.close()
outs.flush()
outs.close()
} else {
String objFolder
if (flag)
objFolder = objFolderFile.getPath()
else
objFolder = objFolderFile.getPath() + File.separator
+ resFile.getName()
File _objFolderFile = new File(objFolder)
_objFolderFile.mkdirs()
for (File sf : resFile.listFiles()) {
copy(sf, new File(objFolder), false)
}
}
}
/**
* 删除文件(夹)
*/
public static void delete(File file) {
if (file == null)
return
if (!file.exists())
return
if (file.isFile()) {
file.delete()
} else {
for (File f : file.listFiles()) {
delete(f)
}
file.delete()
}
}