Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换Java中文本文件的第一行_Java - Fatal编程技术网

替换Java中文本文件的第一行

替换Java中文本文件的第一行,java,Java,我有一个文本文件,我只想更改文件的第一行。这个文件可能有数百万行长,所以我不想遍历所有内容,所以我想知道是否有其他方法可以做到这一点 我还想对第一行应用一些规则,以便用其他单词替换某些单词的实例 这可能吗?您想要一个新的。使用该文件,您可以在文件中的任何位置进行读写 它很像InputStream和OutputStream,但它允许在任何地方进行读写。只应用一次正则表达式。 replaceFirst(“regex”、“replacementstring”): 以随机访问文件的形式打开该文件。将第一

我有一个文本文件,我只想更改文件的第一行。这个文件可能有数百万行长,所以我不想遍历所有内容,所以我想知道是否有其他方法可以做到这一点

我还想对第一行应用一些规则,以便用其他单词替换某些单词的实例

这可能吗?

您想要一个新的。使用该文件,您可以在文件中的任何位置进行读写

它很像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();
}