怎么从一个文本中把内容读出来并写到另一个文本中
import java.io.*;
public class TestInputOutput
{
public static void main(String[] args) //throws Excepton
{
File f1=new File("D:\\我的文档\\桌面\\cc.txt");
File f2=new File("D:\\我的文档\\桌面\\cc2.txt");
try
{
FileReader fr=new FileReader(f1);
BufferedReader br=new BufferedReader(fr);
FileWriter fw =new FileWriter(f2,true);
PrintWriter pw=new PrintWriter(fw);
String s;
s=br.readLine();
while(!s.equals(""))
{
pw.println(s);
s=br.readLine();
}
br.close();
pw.close();
}
catch(
NullPointerException ex)//开始时没写这句,运行时程序报java.lang.NullPonterException加了这句,但生成的cc2.txt里仍没有cc.txt中的内容。
{
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
//以上程序是想把桌面上的cc.txt文本文档的内容读出并写入到桌面上生成的一个cc2.txt中,为什么程序执行后没有报错而且生成了cc2.txt但文档的内容却是空的呢,程序哪点错了??????
//本人菜鸟,请哪位大侠指点一下,最好把可以执行的程序和详解贴给我谢谢。
------解决方案--------------------试试
while((s=br.readLine())!=null)
{
pw.println(s);
}
可以利用apache的FileUtis来拷贝文件
------解决方案--------------------PrintWriter pw=new PrintWriter(fw);
改为
PrintWriter pw=new PrintWriter(fw,true);
------解决方案--------------------但你这个程序会抛
空指针异常,并不是正常结束循环的,当没有行给读时,S的值会被赋为NULL而不是""
------解决方案--------------------
------解决方案--------------------同意一楼
------解决方案--------------------import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
public class FileCopy {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
File f1=new File("C:\\Documents and Settings\\Administrator\\桌面\\cc.txt");
File f2=new File("C:\\Documents and Settings\\Administrator\\桌面\\cc1.txt");
try
{
FileReader fr=new FileReader(f1);
BufferedReader br=new BufferedReader(fr);
FileWriter fw =new FileWriter(f2,true);
PrintWriter pw=new PrintWriter(fw);
String s;
while((s=br.readLine()) != null)
{
System.out.println(s);
pw.println(s);
}
br.close();
pw.close();
}
catch(NullPointerException ex)//开始时没写这句,运行时程序报java.lang.NullPonterException加了这句,但生成的cc2.txt里仍没有cc.txt中的内容。
{
ex.printStackTrace();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
你while循环时出现错误。
原因可能是cc.txt里只有一行数据,那样while循环就不会被执行,就会有空点数异常
------解决方案--------------------Java code
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
public class FileChannelCopy {
public static void main(String[] args) throws IOException {
long t0, t1;
t0 = System.currentTimeMillis();
long len = copy("d:/刘宝瑞 - 连升三级.mp3", "d:/刘宝瑞 - 连升三级.bak.mp3");
t1 = System.currentTimeMillis();
System.out.println("copy file length: " + len);
System.out.println("time: " + (t1 - t0));
}
private static long copy(String srcFilename, String destFilename) throws IOException {
return copy(new File(srcFilename), new File(destFilename));
}
private static long copy(File src, File dest) throws IOException {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
FileChannel srcChannel = new FileInputStream(src).getChannel();
FileChannel destChannel = new FileOutputStream(dest).getChannel();
return srcChannel.transferTo(0, src.length(), destChannel);
} finally {
closeIO(fis);
closeIO(fos);
}
}
private static void closeIO(Closeable io) {
if(io != null) {
try {
io.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}