新手,写了个小程序,但是好像出了点问题
//分别在文件的第一行,第二行,以及最后一行插入指定字符,形成xml文件格式
public File insertStringInFile(String filename)throws Exception {
//创建文件
File outFile = new File("name.tmp");
outFile.createNewFile();
File inFile=new File(filename);
// 输入
BufferedReader in=new BufferedReader(new FileReader(inFile));
// 输出
BufferedWriter out=new BufferedWriter(new FileWriter(outFile));
int head=1;
String headfile="<?xml version=\"1.0\"?>";
String startfile="<xmlfile>";
String endfile="</xmlfile>";
String thisline=in.readLine();
int i=1;
while(thisline!=null)
{
if(i==head)
{
out.write(headfile);
out.write("\n");
out.write(startfile);
out.write("\n");
}
out.write(thisline);
out.write("\n");
i++;
thisline=in.readLine();
}
out.write(endfile);
out.flush();
out.close();
in.close();
inFile.delete();//debug时发现这个方法没有实现
outFile.renameTo(inFile);//直接导致下面的方法出了问题
return outFile;//应该返回谁了呢?如果上面运行成功应该是返回outFile
}
//分别在文件的第一行,第二行,以及最后一行插入指定字符,形成xml文件格式
public File insertStringInFile(String filename)throws Exception {
//创建文件
File outFile = new File("name.tmp");
outFile.createNewFile();
File inFile=new File(filename);
// 输入
BufferedReader in=new BufferedReader(new FileReader(inFile));
// 输出
BufferedWriter out=new BufferedWriter(new FileWriter(outFile));
int head=1;
String headfile="<?xml version=\"1.0\"?>";
String startfile="<xmlfile>";
String endfile="</xmlfile>";
String thisline=in.readLine();
int i=1;
while(thisline!=null)
{
if(i==head)
{
out.write(headfile);
out.write("\n");
out.write(startfile);
out.write("\n");
}
out.write(thisline);
out.write("\n");
i++;
thisline=in.readLine();
}
out.write(endfile);
out.flush();
out.close();
in.close();
inFile.delete();//debug时发现这个方法没有实现
outFile.renameTo(inFile);//直接导致下面的方法出了问题
return outFile;//应该返回谁了呢?如果上面运行成功应该是返回outFile
}
inFile.delete();//debug时发现这个方法没有实现
outFile.renameTo(inFile);//直接导致下面的方法出了问题改成Thread.sleep(1000);//可以省略
outFile.renameTo(inFile);
inFile.delete();
你直接建立一个随机访问文件的读写器,直接在inFile上插入不就行了,你的copy和改名都没必要
FileOperate f = new FileOperate();
String path = f.getPath();
File infile = new File(path+"test.txt");
BufferedReader in=new BufferedReader(new FileReader(infile));
StringBuffer str = new StringBuffer();
str.append("<?xml version=\"1.0\"?>");
str.append("<abc>");
String temp = in.readLine();
while(temp!=null)
{
str.append(temp);
temp = in.readLine();
}
str.append("</abc>");
//--写入文件
String outfilePath = path+"test1.txt";
File outFile = new File(outfilePath);
outFile.createNewFile();
BufferedWriter out=new BufferedWriter(new FileWriter(outFile,false));
out.write(str.toString());
out.flush();
out.close();
in.close();
infile.delete();
infile = new File(path+"test.txt");
outFile.renameTo(infile);
楼主看到加红色标志的那行没。删除后,必须再new出来,就可以。
* @Title: FileOperate.java
* @Package file
* @Description: TODO(用一句话描述该文件做什么)
* @author youjianbo
* @date 2010-9-7 下午05:26:52
* @version V1.0
*/
package file;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;public class FileOperate
{ /**
* @param args
*/
public static void main(String[] args) throws Exception
{
//--读出文件内容
FileOperate f = new FileOperate();
String path = f.getPath();
File infile = new File(path+"test.txt");
BufferedReader in=new BufferedReader(new FileReader(infile));
StringBuffer str = new StringBuffer();
str.append("<?xml version=\"1.0\"?>");
str.append("<abc>");
String temp = in.readLine();
while(temp!=null)
{
str.append(temp);
temp = in.readLine();
}
str.append("</abc>");
//--写入文件
String outfilePath = path+"test1.txt";
File outFile = new File(outfilePath);
outFile.createNewFile();
BufferedWriter out=new BufferedWriter(new FileWriter(outFile,false));
out.write(str.toString());
out.flush();
out.close();
in.close();
infile.delete();
infile = new File(path+"test.txt");
outFile.renameTo(infile);
}
public String getPath()
{
return getClass().getClassLoader().getResource("").getPath();
}
}