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();
}
}
}
}
输入流关闭后,再用输出流,将String[]的内容放到文件中。
如果想实现“边看边写”,必须要是不同文件才可以。
[解决办法]
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));
}
}