怎么用io流删除文件中的数据啊,我将一些数据写在了文件中,这样就不用每次再重新写,可我想删除里面的数据应该怎么做
要删除文件中的数据,可以使用Java IO流中的RandomAccessFile类。RandomAccessFile类可以在文件中定位并修改数据,包括删除数据。
以下是一个简单的示例代码,演示如何使用RandomAccessFile类删除文件中的数据:
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class DeleteDataFromFile {
public static void main(String[] args) {
File file = new File("data.txt");
try {
// 创建RandomAccessFile对象
RandomAccessFile raf = new RandomAccessFile(file, "rw");
// 将文件指针移动到要删除的数据的位置
raf.seek(10);
// 删除数据
raf.writeBytes("");
// 关闭RandomAccessFile对象
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的示例代码中,我们首先创建了一个File对象,表示要操作的文件。然后,我们创建了一个RandomAccessFile对象,指定文件名和打开模式为“rw”(读写模式)。接着,我们使用seek()方法将文件指针移动到要删除的数据的位置,然后使用writeBytes()方法将数据删除。最后,我们关闭RandomAccessFile对象。
需要注意的是,使用RandomAccessFile类删除数据时,要确保删除的数据长度与原数据长度相同,否则可能会出现数据错位的情况。
文件是线性存储的
你不能只删除部分数据
你只能全部读出来,删掉一部分,重新写回去
如果是ini、xml之类的格式,有现成的类库可以调用来修改、删除里面的属性
但是本质上只不过这个读写过程类库帮你做了而已
或者你不要直接操作txt,操作数据库文件,这样你就不必关心文件到底是如何修改的具体过程
关心数据即可
public class CopyFileDemo {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("a.txt");
FileOutputStream fos = new FileOutputStream("b.txt");
int by = 0;
while ((by = fis.read()) != -1) {
fos.write(by);
}
fos.close();
fis.close();
}
}