Java删除文件时总是返回false,删不掉,且无异常

分享知识 传递快乐

 

今天在利用 File 类中的 delete() 方法删除文件时总是返回 false 。查看路径文件路径正确,文件也存在。测试可以正常,唯独在项目中那是一个删不掉啊。后来与测试用例仔细比对了一下,发现有个 IO 类在使用,因此得出:在删除文件是因为没关闭 IO,导致文件无法删除,后来加上 close() 就可以删除文件了。


总结下可能会出现删不掉文件的几种情况:

  • 没有删除文件权限
  • 文件正在使用
  • 多线程操作
  • 打开的文件流没有关闭
  • 需要垃圾回收下

 

 

 

 

 

 

——————————————————————
相互学习,共同进步
如不妥之处请海涵,留言指正

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
//创建File菜单 menu =new JMenu("文件"); menu.setMnemonic(KeyEvent.VK_F); menubar.add(menu); menuItem =new JMenuItem("新建",KeyEvent.VK_N);//创建File子菜单 menuItem.addActionListener(al); menu.add(menuItem); menuItem =new JMenuItem("打开",KeyEvent.VK_O); menuItem.addActionListener(al); menu.add(menuItem); menuItem =new JMenuItem("保存",KeyEvent.VK_S); menuItem.addActionListener(al); menu.add(menuItem); menuItem =new JMenuItem("另成为",KeyEvent.VK_A); menuItem.addActionListener(al); menu.add(menuItem); menu.add(new JSeparator()); menuItem =new JMenuItem("退出",KeyEvent.VK_E); menuItem.addActionListener(al); menu.add(menuItem); //创建Edit菜单 menu =new JMenu("编辑"); menu.setMnemonic(KeyEvent.VK_E); menubar.add(menu); menuItem =new JMenuItem("剪切");//创建Edit子菜单 menuItem.addActionListener(al); menu.add(menuItem); menuItem =new JMenuItem("复制",KeyEvent.VK_C); menuItem.addActionListener(al); menu.add(menuItem); menuItem =new JMenuItem("粘贴",KeyEvent.VK_P); menuItem.addActionListener(al); menu.add(menuItem); menu.add(new JSeparator()); menuItem =new JMenuItem("全部选择",KeyEvent.VK_S); menuItem.addActionListener(al); menu.add(menuItem); menu.add(new JSeparator()); menuItem =new JMenuItem("清屏",KeyEvent.VK_S); menuItem.addActionListener(al); menu.add(menuItem); //创建View菜单 menu =new JMenu("视图"); menu.setMnemonic(KeyEvent.VK_V); menubar.add(menu); radioMenuItem =new JRadioButtonMenuItem("自动换行",true);//创建View子菜单 radioMenuItem.addItemListener(il); menu.add(radioMenuItem); radioMenuItemrow =new JRadioButtonMenuItem("显示行数",false); radioMenuItemrow.addItemListener(il); menu.add(radioMenuItemrow); menu.add(new JSeparator()); submenu =new JMenu("字体");//创建字体子菜单 menu.add(submenu); ButtonGroup group =new ButtonGroup(); radioMenuItem =new JRadioButtonMenuItem("Bold"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Italic"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Plain"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Bold+Italic"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group.add(radioMenuItem); submenu =new JMenu("字体颜色");//创建字体颜色子菜单 menu.add(submenu); ButtonGroup group1 =new ButtonGroup(); radioMenuItem =new JRadioButtonMenuItem("Black"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Green"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Cyan"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Red"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("LightGray"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Orange"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Pink"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("Yellow"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group1.add(radioMenuItem); submenu =new JMenu("背景颜色");//创建背景颜色子菜单 menu.add(submenu); ButtonGroup group2 =new ButtonGroup(); radioMenuItem =new JRadioButtonMenuItem("black"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("green"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("cyan"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("red"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("lightGray"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("orange"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("pink"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); radioMenuItem =new JRadioButtonMenuItem("yellow"); radioMenuItem.addItemListener(il); submenu.add(radioMenuItem); group2.add(radioMenuItem); //弹出菜单 popupmenu =new JPopupMenu(); menuItem =new JMenuItem("新建",KeyEvent.VK_N); menuItem.addActionListener(al); popupmenu.add(menuItem); popupmenu.add(new JSeparator()); menuItem =new JMenuItem("剪切",KeyEvent.VK_C); menuItem.addActionListener(al); popupmenu.add(menuItem); menuItem =new JMenuItem("复制"); menuItem.addActionListener(al); popupmenu.add(menuItem); menuItem =new JMenuItem("粘贴",KeyEvent.VK_P); menuItem.addActionListener(al); popupmenu.add(menuItem); popupmenu.add(new JSeparator()); menuItem =new JMenuItem("全部选择",KeyEvent.VK_S); menuItem.addActionListener(al); popupmenu.add(menuItem); //设置文本区域 ta =new JTextArea(500,50); font =new Font("ch",+Font.PLAIN,18); ta.setFont(font); ta.setSelectedTextColor(Color.red); ta.setLineWrap(true); //设置边框滚动条 JScrollPane scrollpanel =new JScrollPane(ta,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); frame.getContentPane().add(scrollpanel,"Center"); ta.addMouseListener(ml); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(800,600); frame.setVisible(true); } 李惠竹 实现了各记事本的基本功能 //Eidt事件处理 if(menu.getActionCommand().equals("剪切")){ ta.cut(); } else if(menu.getActionCommand().equals("复制")){ ta.copy(); } else if(menu.getActionCommand().equals("粘贴")){ ta.paste(); } else if(menu.getActionCommand().equals("选择全部")){ ta.selectAll(); } else if(menu.getActionCommand().equals("清屏")){ ta.setText(""); } } }; ItemListener il =new ItemListener(){ public void itemStateChanged(ItemEvent e){ int state =e.getStateChange(); JMenuItem menuItem =(JMenuItem)e.getSource(); //自动换行事件处理 if(menuItem.getActionCommand().equals("自动换行")){ if(state==ItemEvent.SELECTED){ ta.setLineWrap(true); } else { ta.setLineWrap(false); } } //显示行数事件处理 else if(menuItem.getActionCommand().equals("显示行数")){//显示行数 if(state==ItemEvent.SELECTED){ File file =new File("c:\\temp.txt"); int rows =1; try{ FileOutputStream fout =new FileOutputStream(file); OutputStreamWriter out =new OutputStreamWriter(fout); ta.write(out); out.close(); }catch(FileNotFoundException fe){} catch(EOFException fe){} catch(IOException fe){} try{ FileInputStream fin =new FileInputStream(file); InputStreamReader in =new InputStreamReader(fin); BufferedReader reader =new BufferedReader(in); String s=reader.readLine(); ta.setText(rows+" "+s); while((s=reader.readLine())!=null){ rows++; ta.append("\n"+rows+" "+s); } in.close(); }catch(FileNotFoundException fe){} catch(EOFException fe){} catch(IOException fe){} file.delete(); } else { File file =new File("c:\\temp.txt"); try{ FileOutputStream fout =new FileOutputStream(file); OutputStreamWriter out =new OutputStreamWriter(fout); ta.write(out); out.close(); }catch(FileNotFoundException fe){} catch(EOFException fe){} catch(IOException fe){} try{ FileInputStream fin =new FileInputStream(file); InputStreamReader in =new InputStreamReader(fin); BufferedReader reader =new BufferedReader(in); String s1=reader.readLine(); String s2=new String(s1.toCharArray(),6,s1.length()-6); ta.setText(s2); while((s1=reader.readLine())!=null){ s2=new String(s1.toCharArray(),6,s1.length()-6); ta.append("\n"+s2); } in.close(); }catch(FileNotFoundException fe){} catch(EOFException fe){} catch(IOException fe){} file.delete(); } } //字体事件处理 else if(menuItem.getActionCommand().equals("Bold")){ if(state==ItemEvent.SELECTED){ font =new Font("ch",Font.BOLD,18); ta.setFont(font); } else { font =new Font("ch",Font.PLAIN,18); ta.setFont(font); } } else if(menuItem.getActionCommand().equals("Italic")){ if(state==ItemEvent.SELECTED){ font =new Font("ch",Font.ITALIC,18); ta.setFont(font); } else { font =new Font("ch",Font.PLAIN,18); ta.setFont(font); } } else if(menuItem.getActionCommand().equals("Plain")){ if(state==ItemEvent.SELECTED){ font =new Font("ch",Font.PLAIN,18); ta.setFont(font); } else { font =new Font("ch",Font.PLAIN,18); ta.setFont(font); } } else if(menuItem.getActionCommand().equals("Bold+Italic")){ if(state==ItemEvent.SELECTED){ font =new Font("ch",Font.BOLD+Font.ITALIC,18); ta.setFont(font); } else { font =new Font("ch",Font.PLAIN,18); ta.setFont(font); } } //字体颜色事件处理 else if(menuItem.getActionCommand().equals("Black")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.black); } } else if(menuItem.getActionCommand().equals("Green")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.green); } } else if(menuItem.getActionCommand().equals("Cyan")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.cyan); } } else if(menuItem.getActionCommand().equals("Red")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.red); } } else if(menuItem.getActionCommand().equals("LightGray")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.lightGray); } } else if(menuItem.getActionCommand().equals("Orange")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.orange); } } else if(menuItem.getActionCommand().equals("Pink")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.pink); } } else if(menuItem.getActionCommand().equals("Yellow")){ if(state==ItemEvent.SELECTED){ ta.setForeground(Color.yellow); } } //背景颜色事件处理 else if(menuItem.getActionCommand().equals("black")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.black); } } else if(menuItem.getActionCommand().equals("green")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.green); } } else if(menuItem.getActionCommand().equals("cyan")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.cyan); } } else if(menuItem.getActionCommand().equals("red")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.red); } } else if(menuItem.getActionCommand().equals("lightGray")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.lightGray); } } else if(menuItem.getActionCommand().equals("orange")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.orange); } } else if(menuItem.getActionCommand().equals("pink")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.pink); } } else if(menuItem.getActionCommand().equals("yellow")){ if(state==ItemEvent.SELECTED){ ta.setBackground(Color.yellow); } } } };

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旷野历程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值