首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

java的文件有关问题

2013-07-20 
java的文件问题怎样将信息从文件中删除啊?//删除学生信息public static void deleteStudent(){while(true)

java的文件问题
怎样将信息从文件中删除啊?
//删除学生信息
public static void deleteStudent(){
while(true){
System.out.println("请选择否要删除数据:");
System.out.println("1.删除");
System.out.println("0.退出");
System.out.print("请选择序号:");
int flag = new Scanner(System.in).nextInt();
while(flag == 1){
System.out.println("************************************************");
System.out.println("请输入要删除的学生的学号:");
String sno = new Scanner(System.in).nextLine();
if(sll.snoExit(sno) ){
sll.delete(sno);
System.out.println("数据删除成功!!!");
}else 
System.out.println("学生或课程不存在!!!");
break;

}
System.out.println("************************************************");
if(flag == 0)
break;
}
}

这是没有用文件的删除代码,文件中录入了
String str = new Scanner(System.in).nextLine();
String[] electiveTemp = str.split("[ ]");
String esno = electiveTemp[0];
String ecno = electiveTemp[1];
int egrade = Integer.parseInt(electiveTemp[2]);
这些信息,现在要指定删除学生的信息怎样删除啊?

求指教。。。。。。
[解决办法]


package demo;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;

public class CharacterDelete {
public static void main(String[] args) throws IOException {
FileReader in = null;
PrintWriter out = null;
try {
in = new FileReader(new File("D:/eclipse4.2/wlog/javatest/src/demo/test.txt"));
out = new PrintWriter("D:/eclipse4.2/wlog/javatest/src/demo/test.txt");
while (in.read() != -1) {
out.println();
}
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}

}
}


要知道更详细的io问题,请点击这里
[解决办法]
使用输入流,一行行将文件内容读取出来,符合删除条件的字符串就不保存,其它内容保存到String[]中


输入流关闭后,再用输出流,将String[]的内容放到文件中。

如果想实现“边看边写”,必须要是不同文件才可以。
[解决办法]

引用:
Quote: 引用:

使用输入流,一行行将文件内容读取出来,符合删除条件的字符串就不保存,其它内容保存到String[]中
输入流关闭后,再用输出流,将String[]的内容放到文件中。

如果想实现“边看边写”,必须要是不同文件才可以。


可以给我写上代码吗?


有读、写的样例。需要LZ自己做些修改,在开头增加键盘输入的代码,在63行增加自己的判断,以及其它需求:


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.nio.channels.FileLock;


public class FileReadAndWriteByBuffer
{

    public static void main(String[] args)
    {

        // 文件初始化
        File file = new File("D:\\test\\aaa.txt");//假设这个是源文件
        File file2 = new File("D:\\test\\bbb.txt");//假设这个是处理后的文件

        // 输入流
        FileInputStream fis = null;
        InputStreamReader isr = null;
        BufferedReader br = null;
        FileLock readLock = null;

        // 输出流
        FileOutputStream fos = null;
        OutputStreamWriter osw = null;
        BufferedWriter bw = null;
        FileLock writeLock = null;

        long current = System.currentTimeMillis();

        try
        {
            // 生成字节输入流
            fis = new FileInputStream(file);
            // 读文件加锁
            readLock = fis.getChannel().tryLock();



            // 字节流转字符流
            isr = new InputStreamReader(fis, "gbk");// 文件存在中文,不能使用iso8859-1的编码格式

            // 高效读取字符流
            br = new BufferedReader(isr);

            // 生成字节输出流
            fos = new FileOutputStream(file2, true);// 加上true,表示从文件结尾开始写
            // 写文件加锁
            writeLock = fos.getChannel().tryLock();

            // 字节流转字符流
            osw = new OutputStreamWriter(fos, "gbk");// 文件存在中文,不能使用iso8859-1的编码格式
            // 高效写入字符流
            bw = new BufferedWriter(osw);

            String fisRead = null;
            while (null != (fisRead = br.readLine()))
            {
                //这里增加判断,符合条件就不写入。具体条件可以按照输入的内容
                if (fisRead.equals("..."))
                {
                    continue;
                }
                bw.write(fisRead);
                bw.newLine();
            }

        }
        catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }


        catch (IOException e)
        {
            e.printStackTrace();
        }
        finally
        {
            if (null != readLock)
            {
                try
                {
                    readLock.release();
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }

            if (null != writeLock)
            {
                try
                {
                    writeLock.release();
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }

            if (null != br)
            {
                try


                {
                    br.close();
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }

            if (null != isr)
            {
                try
                {
                    isr.close();
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }

            if (null != fis)
            {
                try
                {
                    fis.close();
                }
                catch (IOException e)
                {
                    e.printStackTrace();


                }
            }

            if (null != bw)
            {
                try
                {
                    bw.close();
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }

            if (null != osw)
            {
                try
                {
                    osw.close();
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }

            if (null != fos)
            {
                try
                {
                    fos.close();


                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        }

        System.out.println("OK!Use time : " + (System.currentTimeMillis() - current));
    }
}

热点排行