java 删除文件中的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 删除文件中的数据相关的知识,希望对你有一定的参考价值。

有一个已经存在的文本文件存放了一系列学生的记录,如何从文件中删除指定学号的学生记录

  1、如果只是想要文件中的内容,可以使用如下代码:

 FileOutputStream fs = new FileOutputStream(new File("C:\\\\buyterms.txt"));

  2、如果是想要文件夹中的内容,可以使用如下代码:

package com.xx;  
  
import java.io.File;  
  
public class Test   
  
    public static void main(String[] args)   
        String fileRoot = "C:/Users/xx/Desktop/xx/xxx";  
        delFolder(fileRoot);  
            System.out.println("deleted");  
      
  
//  // 删除完文件后删除文件夹  
//  // param folderPath 文件夹完整绝对路径  
    public static void delFolder(String folderPath)   
        try   
            delAllFile(folderPath); // 删除完里面所有内容  
            //不想删除文佳夹隐藏下面  
//          String filePath = folderPath;  
//          filePath = filePath.toString();  
//          java.io.File myFilePath = new java.io.File(filePath);  
//          myFilePath.delete(); // 删除空文件夹  
         catch (Exception e)   
            e.printStackTrace();  
          
      
  
    // 删除指定文件夹下所有文件  
    // param path 文件夹完整绝对路径  
    public static boolean delAllFile(String path)   
        boolean flag = false;  
        File file = new File(path);  
        if (!file.exists())   
            return flag;  
          
        if (!file.isDirectory())   
            return flag;  
          
        String[] tempList = file.list();  
        File temp = null;  
        for (int i = 0; i < tempList.length; i++)   
            if (path.endsWith(File.separator))   
                temp = new File(path + tempList[i]);  
             else   
                temp = new File(path + File.separator + tempList[i]);  
              
            if (temp.isFile())   
                temp.delete();  
              
            if (temp.isDirectory())   
                delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件  
//              delFolder(path + "/" + tempList[i]);// 再删除空文件夹  
                flag = true;  
              
          
        return flag;  
      
参考技术A java中的读文件和写文件需要使用读入流和输出流,你可以先读取文件的内容,在读取过程中过滤掉要删除的学生记录,然后在把内存中的文件内容在写回文件本回答被提问者采纳 参考技术B java删除文件内容只有一种实现方法,就是把整个文件重写,只是把哪一条记录去除掉 参考技术C 我这里有一个类似的例子,不过太多了,我发一部分出来,这上面有几个方法,其中有删除了,不是学生,是定单的, (先将数据读出来,然后删掉相应的信息,再写入新建的同名文件)
我有个学的生,只做的浏览功能
如果要的话给我发个信息
package computeOrder;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Vector;

import javax.swing.JOptionPane;

public class OrderList implements Path
private static File file=new File(FILEDIR,FILENAME);
//浏览:
public static void listAllOrder()
List<Order> list=new Vector<Order>();
list=WriteAndRead.read();
for(Order order:list)
System.out.println(order.toString());


//添加:
public static void addOrder(Order order)
WriteAndRead.Write(order);

//按用户信息进行查询:
public static void research(String customName)
List<Order> list=new Vector<Order>();
list=WriteAndRead.read();
boolean flag=true;
for(Order order:list)
if(order.getCustom().getCustomName().equals(customName))
System.out.println(order.toString());
flag=false;
break;


if(flag)
System.out.println("没有与之相匹配的订单: ");


// 按用户信息进行修改:
public static void modify(String customName)
List<Order> list = new Vector<Order>();
list = WriteAndRead.read();
boolean flag = true;
// JOptionPane.showMessageDialog(null, "目前只能修改用户名与用户等级: ");
for (int i=0;i<list.size();i++)
if (list.get(i).getCustom().getCustomName().equals(customName))
Order or = null;
flag = false;
// System.out.println(list.indexOf(order));
try
or = list.get(i);
or=ModifyInfo.modfityInfo(or);
// while(true)
// String str=Tools.getMessageFromKeyBoard("请输入要修改的信息: ");
// if(str.equals("用户姓名"))
// or.getCustom().setCustomName(Tools.getMessageFromKeyBoard("请输入姓名: "));
// System.out.println("继续修改请输入Y");
// if(Tools.getMessageFromKeyBoard(" ").trim().charAt(0)=='Y')
// else
// break;
//
//
//
// if(str.equals("用户等级"))
// or.getCustom().setCustomType(Tools.getMessageFromKeyBoard("请输入等级: "));
// System.out.println("继续修改请输入Y");
// if(Tools.getMessageFromKeyBoard(" ").trim().charAt(0)=='Y')
// else
// break;
//
//
//
list.remove(i);
list.add(i, or);
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();




if (flag)
System.out.println("没有与之相匹配的订单: ");

// System.out.println("OK?");
file.delete();
if (file.exists())
System.out.println("删除失败: ");

// System.out.println("OK");
for (Order order : list)
WriteAndRead.Write(order);


//按用户信息进行删除:
public static void delete(String customName)
List<Order> list = new Vector<Order>();
list = WriteAndRead.read();
boolean flag = true;
for(int i=0;i<list.size();i++)
if (list.get(i).getCustom().getCustomName().equals(customName))
System.out.println(list.indexOf(list.get(i)));
list.remove(list.get(i));
flag=false;
//***发现严重问题,用List在这里如果用for——each循环,会倒致移除失败:*****


if (flag)
System.out.println("没有与之相匹配的订单: ");

file.delete();
if(file.exists())
System.out.println("删除失败: ");

for(Order order: list)
WriteAndRead.Write(order);


Java怎么清除缓存

某系统 一些内容是放在缓存中的 很大一部分都是异步的 EXTJS UI 点击退出的时候如果不清空 缓存点击后退还能进行信息的修改 请问怎么办 才能清除缓存 谢谢

通过 Java 控制面板删除临时文件

    在 Java 控制面板的常规选项卡下,单击“临时 Internet 文件”部分下的设置。
    此时将显示临时文件设置对话框。 

    在“临时文件设置”对话框上单击删除文件。
    此时将显示删除文件和应用程序对话框。

    在删除文件和应用程序对话框上单击确定。这将从高速缓存中删除所有下载的应用程序和小应用程序。

    在临时文件设置对话框上单击确定。如果要从高速缓存中删除特定的应用程序和小应用程序,请分别单击“查看应用程序”和“查看小应用程序”选项。

参考技术A 你好,关于缓存是输入输出流呢还是你就想清除系统缓存呢?
http://wenku.baidu.com/view/0676f86648d7c1c708a14517.html

这个里面有一些清理缓存的方法可以看看。然后自己设置一下就ok了
参考技术B 软件设置中有清除缓存的选项。 参考技术C 楼上说得是对的,这跟缓存没关系,是你程序考虑不够完善。 参考技术D java自带垃圾处理器,

以上是关于java 删除文件中的数据的主要内容,如果未能解决你的问题,请参考以下文章

java中如何用io流删除一个文本中的数据?

Java 如何使用输入流和输出流 将txt文件中的某一行数据删除?

java IO流实现删除文件夹以及文件夹中的内容

删除java中的临时文件

请问用java 如何实现逻辑删除文件?

怎样删除svn目录中的.svn文件夹