我有2个文件,一个是new.txt,第二个是template.txt 我需要将new.txt放到template.txt的6行中,但不知道该怎么做。 让我们向您展示我已经拥有的东西!
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
File dir = new File(".");
String source = dir.getCanonicalPath() + File.separator + "new.txt";
String dest = dir.getCanonicalPath() + File.separator + "template.txt";
File fin = new File(source);
FileInputStream fis = new FileInputStream(fin);
BufferedReader in = new BufferedReader(new InputStreamReader(fis));
FileWriter fstream = new FileWriter(dest,true);
BufferedWriter out = new BufferedWriter(fstream);
String aLine = null;
while((aLine = in.readLine()) != null){
out.write(aLine);
out.newLine();
}
in.close();
out.close();
}
}
答案 0 :(得分:4)
文件没有“插入”操作。您不能简单地在文件中间写入内容。写入以给定的偏移量发生,并且它们会覆盖已经存在的任何内容。
因此,您需要创建一个临时文件,将new.txt
的1-5行复制到其中。然后,从模板中写入第6行,然后是new.txt
的其余部分。完成后,删除new.txt
并将临时文件重命名为new.txt
。
如果保证文件a很小,则可以用内存缓冲区替换临时文件。
答案 1 :(得分:0)
上面要注释的伪代码:
File fileOne = new File("new.txt");
File fileTwo = new File("template.txt");
List<String> listOne = new ArrayList<String>();
List<String> listTwo = new ArrayList<String>();
String s = "";
while((s = fileOne.readLine()) != null){
listOne.add(s);
}
for(int i = 0; i < listOne.size(); i++){
if(i == 5){
String s2 = "";
while((s2 = fileTwo.readLine()) != null){
listTwo.add(s);
}
}
listTwo.add(listOne.get(i));
}
就像我说的那样,这只是伪代码,所以可能不起作用,但这对您来说是个好习惯。希望您了解其背后的想法。
PS。当然,这样做之后,您必须将listTwo
中的所有数据写入所需的文件。