rs=stam.executeQuery("select * from Adm where AdmId="+dljm.AdmId);
rs.next(); if(rs.getString(7)==null){//在数据库中,存放文件地址的字符串是否为空
stam.executeUpdate("update Adm set AdmName='"+tf2.getText()+"',AdmSex='男',AdmTel='"+tf4.getText()+"',BuiId='"+tf3.getText()+"' where AdmId="+dljm.AdmId);
JOptionPane.showMessageDialog(null, "修改成功!!");
thiss.setEnabled(true);//thiss是主界面床过来的对象,不用理
this.dispose();
}else{//重点是这一块
String temp ="./pictures/"+tf2.getText()+".jpg";//创建新文件的文件地址 file = new File(rs.getString(7));//原文件
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
fos = new FileOutputStream(temp);
bos = new BufferedOutputStream(fos);
int temp1=bis.read();
while(temp1!= -1){
bos.write(temp1);
temp1=bis.read();
}
fis.close();
fos.close();
bos.close();
bis.close();
file.delete();//这句总是删除不了原文件??
stam.executeUpdate("update Adm set AdmName='"+tf2.getText()+"',AdmSex='男',AdmTel='"+tf4.getText()+"',BuiId='"+tf3.getText()+"',AdmPtId='"+temp+"' where AdmId="+dljm.AdmId);
JOptionPane.showMessageDialog(null, "修改成功!!!");
thiss.setEnabled(true);
this.dispose();//一直都没问题,执行到了这里
那就有可能是你在别的程序中打开了这个文件,比如记事本或者其他文本编辑器?
public class FileDelete { /**
* 根据路径删除指定的目录或文件,无论存在与否
*@param sPath 要删除的目录或文件
*@return 删除成功返回 true,否则返回 false。
*/
public static boolean deleteFolder(String sPath) {
boolean flag = false;
File file = new File(sPath);
// 判断目录或文件是否存在
if (!file.exists()) { // 不存在返回 false
return flag;
} else {
// 判断是否为文件
if (file.isFile()) { // 为文件时调用删除文件方法
return deleteFile(sPath);
} else { // 为目录时调用删除目录方法
return deleteDirectory(sPath);
}
}
}
/**
* 删除单个文件
* @param sPath 被删除文件的文件名
* @return 单个文件删除成功返回true,否则返回false
*/
public static boolean deleteFile(String sPath) {
boolean flag = false;
File file = new File(sPath);
// 路径为文件且不为空则进行删除
if (file.isFile() && file.exists()) {
file.delete();
flag = true;
}
return flag;
} /**
* 删除目录(文件夹)以及目录下的文件
* @param sPath 被删除目录的文件路径
* @return 目录删除成功返回true,否则返回false
*/
public static boolean deleteDirectory(String sPath) {
File dirFile = new File(sPath);
//如果dir对应的文件不存在,或者不是一个目录,则退出
if (!dirFile.exists() || !dirFile.isDirectory()) {
return false;
}
boolean flag = true;
//删除文件夹下的所有文件(包括子目录)
File[] files = dirFile.listFiles();
for (int i = 0; i < files.length; i++) {
//删除子文件
if (files[i].isFile()) {
flag = deleteFile(files[i].getAbsolutePath());
if (!flag) break;
} //删除子目录
else {
flag = deleteDirectory(files[i].getAbsolutePath());
if (!flag) break;
}
}
if (!flag) return false;
//删除当前目录
if (dirFile.delete()) {
return true;
} else {
return false;
}
}
}