java文件读写,在一个已经有内容的文件中,追加第一行,如何做到?

java文件读写,在一个已经有内容的文件中,追加第一行,如何做到?,第1张

我的想法是可以用RandomAccessFile,这个类的seek方法,想在文件的哪个位置插入内容都行。所以你的第一行就不在话下了。但是,这个会覆盖你文件中插入位置后面的内容。相当于我们在输入的时候,按了键盘的insert键盘。所以,像你这种情况只能用临时文件来存储原有的内容,然后把要插入的数据写入文件,再把临时文件的内容追加到文件中。\x0d\x0avoid insert(String filename,int pos,String insertContent){//pos是插入的位置\x0d\x0aFile tmp = File.createTempFile("tmp",null)\x0d\x0atmp.deleteOnExit()\x0d\x0atry{\x0d\x0aRandomAccessFile raf = new RandomAccessFile(filename,"rw")\x0d\x0aFileOutputStream tmpOut = new FileOutputStream(tmp)\x0d\x0aFileInputStream tmpIn = new FileInputStream(tmp)\x0d\x0araf.seek(pos)//首先的话是0\x0d\x0abyte[] buf = new byte[64]\x0d\x0aint hasRead = 0\x0d\x0awhile((hasRead = raf.read(buf))>0){\x0d\x0a//把原有内容读入临时文件\x0d\x0atmpOut.write(buf,0,hasRead)\x0d\x0a\x0d\x0a}\x0d\x0araf.seek(pos)\x0d\x0araf.write(insertContent.getBytes())\x0d\x0a//追加临时文件的内容\x0d\x0awhile((hasRead = tmpIn.read(buf))>0){\x0d\x0araf.write(buf,0,hasRead)\x0d\x0a}\x0d\x0a}\x0d\x0a}

java文件追加内容的三种方法:

方法一:

public static void writeToTxtByRandomAccessFile(File file, String str){

RandomAccessFile randomAccessFile = null

try {

randomAccessFile = new RandomAccessFile(file,"rw")

long len = randomAccessFile.length()

randomAccessFile.seek(len)

randomAccessFile.writeBytes(new String(str.getBytes(),"iso8859-1")+"\r\n")

} catch (FileNotFoundException e) {

e.printStackTrace()

}catch (IOException e) {

e.printStackTrace()

}finally{

try {

randomAccessFile.close()

} catch (IOException e) {

e.printStackTrace()

}

}

}

方法二:

public static void writeToTxtByFileWriter(File file, String content){

BufferedWriter bw = null

try {

FileWriter fw = new FileWriter(file, true)

bw = new BufferedWriter(fw)

bw.write(content)

} catch (IOException e) {

e.printStackTrace()

}finally{

try {

bw.close()

} catch (IOException e) {

e.printStackTrace()

}

}

}

方法三:

public static void writeToTxtByOutputStream(File file, String content){

BufferedOutputStream bufferedOutputStream = null

try {

bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file, true))

bufferedOutputStream.write(content.getBytes())

} catch (FileNotFoundException e) {

e.printStackTrace()

} catch(IOException e ){

e.printStackTrace()

}finally{

try {

bufferedOutputStream.close()

} catch (IOException e) {

e.printStackTrace()

}

}

}

 java中,对文件进行追加内容 *** 作的三种方法!

import java.io.BufferedWriter

import java.io.FileOutputStream

import java.io.FileWriter

import java.io.IOException

import java.io.OutputStreamWriter

import java.io.PrintWriter

import java.io.RandomAccessFile

//如果文件存在,则追加内容;如果文件不存在,则创建文件,追加内容的三种方法

public class AppendContentToFile {

@SuppressWarnings("static-access")

public static void main(String[] args) {

AppendContentToFile a = new AppendContentToFile()

a.method1()

a.method2("E:\\dd.txt", "222222222222222")

a.method3("E:\\dd.txt", "33333333333")

}

方法1:

public void method1() {

FileWriter fw = null

try {

//如果文件存在,则追加内容;如果文件不存在,则创建文件

File f=new File("E:\\dd.txt")

fw = new FileWriter(f, true)

} catch (IOException e) {

e.printStackTrace()

}

PrintWriter pw = new PrintWriter(fw)

pw.println("追加内容")

pw.flush()

try {

fw.flush()

pw.close()

fw.close()

} catch (IOException e) {

e.printStackTrace()

}

}

方法2:

public static void method2(String file, String conent) {

BufferedWriter out = null

try {

out = new BufferedWriter(new OutputStreamWriter(

new FileOutputStream(file, true)))

out.write(conent+"\r\n")

} catch (Exception e) {

e.printStackTrace()

} finally {

try {

out.close()

} catch (IOException e) {

e.printStackTrace()

}

}

}

方法3:

public static void method3(String fileName, String content) {

try {

// 打开一个随机访问文件流,按读写方式

RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw")

// 文件长度,字节数

long fileLength = randomFile.length()

// 将写文件指针移到文件尾。

randomFile.seek(fileLength)

randomFile.writeBytes(content+"\r\n")

randomFile.close()

} catch (IOException e) {

e.printStackTrace()

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11473432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存