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()
}
}
}
我的想法是可以用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()
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)