如何使用Java删除文本文件的前两行?
答案 0 :(得分:2)
读取文件并回写除前两行之外的所有内容。
答案 1 :(得分:2)
如果你想通过索引引用要排除的行,就像你给出的例子一样。并且它不会将整个文件加载到内存中。
答案 2 :(得分:1)
在此处阅读文件的非常好的示例:http://www.kodejava.org/examples/266.html
答案 3 :(得分:1)
以下是Guava解决方案:
public static void removeLines(final File targetFile,
final Charset charSet,
final Collection<Integer> lineNumbers) throws IOException{
final List<String> lines = Files.readLines(targetFile, charSet);
// line numbers need to be sorted in reverse.
// if they are, you can replace everything from Ordering until )){
// with 'lineNumbers){'
for(final Integer lineNumber : Ordering
.natural()
.reverse()
.immutableSortedCopy(lineNumbers)){
lines.remove(lineNumber.intValue());
}
Files.write(Joiner.on('\n').join(lines), targetFile, charSet);
}
是的,整个文件都被读入内存,所以不要尝试使用庞大的服务器日志文件。
答案 4 :(得分:0)
以下是我从targetFile中删除前20行的方法......
class removeLines{
public static void main(String[] args){
try{
//Here I am opening the target File named 1.txt......
File targetFile = new File("1.txt");
BufferedReader targetBuf = new BufferedReader(new FileReader(targetFile));
//Opening a Temp file.......
File tempFile = new File("temp.txt");
PrintWriter printTemp = new PrintWriter(tempFile);
//Here is the important part... skipping first 20 lines....
for(int i=1;i<=20;i++){
targetBuf.readLine();
}
String notfau;
while((notfau = targetBuf.readLine())!=null){
printTemp.println(notfau);
}
//closing the files after finished copying from target file to temp file....
targetBuf.close();
printTemp.close();
//Now replace and delete the target file with temp file....
targetFile.delete();
tempFile.renameTo(targetFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 5 :(得分:-1)
以下是:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.File;
import java.io.FileWriter;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
public class FileUtil {
public void removeLineFromFile(String file, String lineToRemove) {
try {
File inFile = new File(file);
if (!inFile.isFile()) {
System.out.println("Parameter is not an existing file");
return;
}
// Construct the new file that will later be renamed
// to the original filename.
File tempFile = new File(inFile.getAbsolutePath() + ".tmp");
BufferedReader br = new BufferedReader(new FileReader(file));
PrintWriter pw = new PrintWriter(new FileWriter(tempFile));
String line = null;
//Read from the original file and write to the new
//unless content matches data to be removed.
while ((line = br.readLine()) != null) {
if (!line.trim().equals(lineToRemove)) {
pw.println(line);
pw.flush();
}
}
pw.close();
br.close();
//Delete the original file
if (!inFile.delete()) {
System.out.println("Could not delete file");
return;
}
//Rename the new file to the filename the original file had.
if (!tempFile.renameTo(inFile))
System.out.println("Could not rename file");
}
catch (FileNotFoundException ex) {
ex.printStackTrace();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
FileUtil util = new FileUtil();
util.removeLineFromFile("test.txt", "bbbbb");
}
}