java 删除文件中的数据

有一个已经存在的文本文件存放了一系列学生的记录,如何从文件中删除指定学号的学生记录... 有一个已经存在的文本文件存放了一系列学生的记录,如何从文件中删除指定学号的学生记录 展开
 我来答
一骑当后
2015-07-05 · 知道合伙人数码行家
一骑当后
知道合伙人数码行家
采纳数:40296 获赞数:306448
网络、设备维护、电路、弱电检测。

向TA提问 私信TA
展开全部

  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;  
    }  
}
cn_arthurs
2008-10-23 · TA获得超过438个赞
知道小有建树答主
回答量:566
采纳率:0%
帮助的人:332万
展开全部
java中的读文件和写文件需要使用读入流和输出流,你可以先读取文件的内容,在读取过程中过滤掉要删除的学生记录,然后在把内存中的文件内容在写回文件
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ajax_2003
2008-10-23 · TA获得超过4995个赞
知道大有可为答主
回答量:2628
采纳率:0%
帮助的人:2484万
展开全部
java删除文件内容只有一种实现方法,就是把整个文件重写,只是把哪一条记录去除掉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
东桖柳83
2008-10-23 · TA获得超过599个赞
知道小有建树答主
回答量:603
采纳率:0%
帮助的人:380万
展开全部
我这里有一个类似的例子,不过太多了,我发一部分出来,这上面有几个方法,其中有删除了,不是学生,是定单的, (先将数据读出来,然后删掉相应的信息,再写入新建的同名文件)
我有个学的生,只做的浏览功能
如果要的话给我发个信息
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);}
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式