如何将一个文件的内容复制到另一个文件,但在 Java 中的文件顶部
How to copy content of a file to another file but at the top of the file in Java
我想将文件 "Convert.sql" 的内容复制到文件 "Entity.sql" 而不覆盖 "Entity.sql" 文件。这部分我已经能够做到,但除此之外,我希望将文件 "Convert.sql" 的内容复制到 "Entity.sql" 文件的顶部,并且不在同一行。
例如:Convert.sql
学生
员工
例如:Entity.sql
姓名
地址
示例:结果
学生
员工
姓名
地址
这是我的代码,用于将一个文件的内容复制到另一个文件而不覆盖该文件,但我不想将它复制到同一行。
package Final;
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 Mainy {
public static void main(String[] args) throws IOException {
File dir = new File(".");
String source = dir.getCanonicalPath() + File.separator + "Convert.sql";
String dest = dir.getCanonicalPath() + File.separator + "Entity.sql";
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) {
//Process each line and add output to Dest.txt file
out.write(aLine);
out.newLine();
}
// do not forget to close the buffer reader
in.close();
// close buffer writer
out.close();
}
}
有人可以帮我做这个吗?
使用 FileWriter(file,true) 追加到文件
File file=new File("Entity.sql");
FileWriter fileWritter = new FileWriter(file.getName(),true);
BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
然后读取Convert.sql并写入数据
bufferWritter.write(data);
然后关闭bufferWriter
bufferWritter.close();
这里有一个片段可以完成您描述的工作
Charset usedCharset = Charset.defaultCharset();
// read all lines from Convert.sql into a list
List<String> allLines = Files.readAllLines(Paths.get("Convert.sql"), usedCharset);
// append all lines from Entity.sql to the list
allLines.addAll(Files.readAllLines(Paths.get("Entity.sql"), usedCharset));
// write all lines from the list to file Entity.sql
Files.write(Paths.get("Entity.sql"), allLines, usedCharset);
如果要处理整个文件,根本不需要处理行或将内容解释为文本(即应用字符编码):
Path in=Paths.get("Convert.sql"), out=Paths.get("Entity.sql");
byte[] old=Files.readAllBytes(out);
Files.copy(in, out, StandardCopyOption.REPLACE_EXISTING);
Files.write(out, old, StandardOpenOption.APPEND);
只需,完整读取您要添加的文件,复制另一个文件并附加您在第一步中读取的旧数据。
这个用到了Java7API不过我觉得还是值得学习的
我想将文件 "Convert.sql" 的内容复制到文件 "Entity.sql" 而不覆盖 "Entity.sql" 文件。这部分我已经能够做到,但除此之外,我希望将文件 "Convert.sql" 的内容复制到 "Entity.sql" 文件的顶部,并且不在同一行。
例如:Convert.sql
学生
员工
例如:Entity.sql
姓名
地址
示例:结果
学生
员工
姓名
地址
这是我的代码,用于将一个文件的内容复制到另一个文件而不覆盖该文件,但我不想将它复制到同一行。
package Final;
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 Mainy {
public static void main(String[] args) throws IOException {
File dir = new File(".");
String source = dir.getCanonicalPath() + File.separator + "Convert.sql";
String dest = dir.getCanonicalPath() + File.separator + "Entity.sql";
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) {
//Process each line and add output to Dest.txt file
out.write(aLine);
out.newLine();
}
// do not forget to close the buffer reader
in.close();
// close buffer writer
out.close();
}
}
有人可以帮我做这个吗?
使用 FileWriter(file,true) 追加到文件
File file=new File("Entity.sql");
FileWriter fileWritter = new FileWriter(file.getName(),true);
BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
然后读取Convert.sql并写入数据
bufferWritter.write(data);
然后关闭bufferWriter
bufferWritter.close();
这里有一个片段可以完成您描述的工作
Charset usedCharset = Charset.defaultCharset();
// read all lines from Convert.sql into a list
List<String> allLines = Files.readAllLines(Paths.get("Convert.sql"), usedCharset);
// append all lines from Entity.sql to the list
allLines.addAll(Files.readAllLines(Paths.get("Entity.sql"), usedCharset));
// write all lines from the list to file Entity.sql
Files.write(Paths.get("Entity.sql"), allLines, usedCharset);
如果要处理整个文件,根本不需要处理行或将内容解释为文本(即应用字符编码):
Path in=Paths.get("Convert.sql"), out=Paths.get("Entity.sql");
byte[] old=Files.readAllBytes(out);
Files.copy(in, out, StandardCopyOption.REPLACE_EXISTING);
Files.write(out, old, StandardOpenOption.APPEND);
只需
这个用到了Java7API不过我觉得还是值得学习的