替换Java中文本文件的第一行
我有一个文本文件,我只想更改文件的第一行。这个文件可能有数百万行长,所以我不想遍历所有内容,所以我想知道是否有其他方法可以做到这一点 我还想对第一行应用一些规则,以便用其他单词替换某些单词的实例 这可能吗?您想要一个新的。使用该文件,您可以在文件中的任何位置进行读写 它很像InputStream和OutputStream,但它允许在任何地方进行读写。只应用一次正则表达式。 replaceFirst(“regex”、“replacementstring”):替换Java中文本文件的第一行,java,Java,我有一个文本文件,我只想更改文件的第一行。这个文件可能有数百万行长,所以我不想遍历所有内容,所以我想知道是否有其他方法可以做到这一点 我还想对第一行应用一些规则,以便用其他单词替换某些单词的实例 这可能吗?您想要一个新的。使用该文件,您可以在文件中的任何位置进行读写 它很像InputStream和OutputStream,但它允许在任何地方进行读写。只应用一次正则表达式。 replaceFirst(“regex”、“replacementstring”): 以随机访问文件的形式打开该文件。将第一
以随机访问文件的形式打开该文件。将第一行读入字符串,然后应用更改,然后将字符串写回。如果新行的字符数(字节)与原始第一行不同,则必须重新写入整个文件以消除间隙或避免覆盖第二行的一部分 当然,各种工具,如
String.replaceFirst(String regex,String replacement)
()或RandomAccessFile
()可以帮助您完成此任务。A
可以完成此任务,除非生成的行的长度与原始行的长度不同
如果您被迫执行复制(第一行被替换,其余数据应按原样复制),我建议使用
和
。首先使用BufferedReader
的readLine()
读取第一行。修改它并将其写入BufferedWriter
。然后使用char[]
数组对文件的其余部分执行暴力复制。这将比逐行复制效率更高。如果您需要详细信息,请告诉我
另一个选项是在同一文件内执行读写操作。不过会有点复杂。:)如果您还需要这方面的详细信息,请告诉我。为什么不编写一个Perl脚本并使用Runtime.exec()调用它呢。但这不是一个纯粹的java解决方案。在深入阅读这篇文章之前
public void main()抛出IOException{
String newString=“新字符串”;
File myFile=新文件(“路径文件”);
//用于存储文件中每一行的数组
ArrayList fileContent=新的ArrayList();
扫描仪myReader=新扫描仪(myFile);
while(myReader.hasNextLine()){
//将文件内容读入数组
add(myReader.nextLine());
}
myReader.close();
//删除原始行
fileContent.remove(0);
//进入新线
添加(0,新闻字符串);
//将新内容写入文件
FileWriter myWriter=新的FileWriter(“路径文件”);
for(字符串eachLine:fileContent){
myWriter.write(eachLine+“\n”);
}
myWriter.close();
}
只有在第1行的长度不变的情况下,“文件可能有数百万行长”——祝regexps好运!如果要替换的字符串长度不同,请提供一些信息。不复制到新文件是否可能?如果长度不同,您至少需要在同一文件或不同的文件中重新写入所有字节。有没有关于如何使用RandomAccessFile执行此操作的代码示例?
public void main() throws IOException {
String newString = "The New String";
File myFile = new File("PathToFile");
// An array to store each line in the file
ArrayList<String> fileContent = new ArrayList<String>();
Scanner myReader = new Scanner(myFile);
while (myReader.hasNextLine()) {
// Reads the file content into an array
fileContent.add(myReader.nextLine());
}
myReader.close();
// Removes Original Line
fileContent.remove(0);
// Enters New Line
fileContent.add(0, newString);
// Writes the new content to file
FileWriter myWriter = new FileWriter("PathToFile");
for (String eachLine : fileContent) {
myWriter.write(eachLine + "\n");
}
myWriter.close();
}