java 文件复制怎样才能不覆盖原文件中的内容

Adrenine 发布于 2015/04/12 10:05
阅读 1K+
收藏 0

这样写出来的代码a.txt中原有的内容会被b.txt给覆盖掉,怎样才能将b.txt复制到a.txt后面,而不覆盖a.txt中原有的内容

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/*利用字节流复制一个文件*/
public class ByteCopyFile
{
public static void main(String[] args)
{
 File file=new File("E:/a.txt");
 InputStream is=null;
 OutputStream os=null;
 try 
 {
  is=new FileInputStream("F:/b.txt");
  os=new FileOutputStream(file);
  int len=0;
  while((len=is.read())!=-1)
  {
   os.write(len);
  }
 } catch (FileNotFoundException e)
 {
  e.printStackTrace();
 } catch (IOException e) 
 {
  e.printStackTrace();
 }
}
}


加载中
0
guor
guor
那是文件追加啊,你看一下RandomAccessFile这个类,支持随机读写的
Adrenine
Adrenine
看了好乱,您能帮我改写一下上面这个程序吗
Adrenine
Adrenine
好的,我看看
0
ginkgo_w
ginkgo_w
第20行改成 os=new FileOutputStream(file, true);
Adrenine
Adrenine
居然把这个忘了,谢谢你了
0
guor
guor

引用来自“guor”的评论

那是文件追加啊,你看一下RandomAccessFile这个类,支持随机读写的
public static final void append(File sf, File tf) throws IOException {
		@SuppressWarnings("restriction")
		String lineSeparator = java.security.AccessController.doPrivileged(new sun.security.action.GetPropertyAction("line.separator"));
		RandomAccessFile targetFileStream = new RandomAccessFile(tf, "rw");
		try {
			targetFileStream.seek(targetFileStream.length());
			targetFileStream.write(lineSeparator.getBytes(), 0, lineSeparator.length());// 插入一个换行
			InputStream in = new FileInputStream(sf);
			try {
				byte[] buf = new byte[4096];
				int read = -1;
				while ((read = in.read(buf)) != -1) {
					targetFileStream.write(buf, 0, read);
				}
			} finally {
				in.close();
			}
		} finally {
			targetFileStream.close();
		}
	}



Adrenine
Adrenine
非常感谢您的帮助
0
DW_GYT
DW_GYT
LZ先看看IO的基础吧,基础扎实才回提高更快
Adrenine
Adrenine
一直在学基础呢
0
ArrayListt
ArrayListt
public FileOutputStream(String name,
                boolean append)
                 throws FileNotFoundException
ArrayListt
ArrayListt
回复 @Adrenine : 不客气。
Adrenine
Adrenine
非常感谢您的指导
返回顶部
顶部