如何读取一个文件,并用另一个文件的内容替换它的某些部分?



我正在用Java制作一个形容词填空故事创建者,作为学生项目的一部分。我有两个.txt文件:一个文件包含故事本身,其中的空格是这样写的:__。例如:"这是一个__的故事。"第二个文件包含一个形容词列表。

我已经让我的大部分代码工作,但我无法从故事文件中读取,并将__部分替换为形容词文件中的随机单词。最好的方法是什么?

如果你有任何问题请告诉我,谢谢!

在java中阅读文件的一些很好的资源是这个网站:https://www.geeksforgeeks.org/different-ways-reading-text-file-java/有很多可用的选项,你可以很容易地找到最适合你的项目。

要替换文本文件中的空格,可以尝试这样做:

//Creating a temporary copy of the file is useful in that case
FileWriter writer = new FileWriter(tempFile);
Reader reader = new FileReader(yourFile);
BufferedReader br = new BufferedReader(reader);
while(br.ready()) {
writer.write(br.readLine().replaceAll("__", adjective));
}
writer.close();
br.close();
reader.close();
//And finally overwrite the initial file with the result
tempFile.renameTo(file);

我从前面回答的问题中得到了答案:文件java替换字符,并根据您的情况进行了调整。

我很抱歉没有发布我的代码开始,这是我现在所做的。我猜我在代码中开始使用for循环的地方是它不起作用的地方。我不确定我是否正确地使用了。equals。

我当然会做更多的研究,但任何对我的代码的指点将是非常感激的!

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class StoryMaker {

public void createStory() throws FileNotFoundException {
ArrayList<String> storyArray = new ArrayList<>();
ArrayList<String> adjectivesArray = new ArrayList<>();
while (true) {
System.out.println("----------------------------------");
System.out.println("t1. Lag adjektivhistorie automatisk" + "nt2. Lag adjektivhistorie med egne adjektiver" + "nt3. Avslutt");
System.out.println("----------------------------------");
Scanner scanner = new Scanner(System.in);
int userInput = scanner.nextInt();
switch (userInput) {
case 1:
System.out.println("t### Her er din automatisk lagde historie: ###");
File storyFile = new File("X:\Users\xx\IdeaProjects\Trinn6\story.txt");
File adjectivesFile = new File("X:\Users\xx\IdeaProjects\Trinn6\adjektiv.txt");
Scanner storyScanner = new Scanner(storyFile);
Scanner adjectivesScanner = new Scanner(adjectivesFile);
String adjectives = adjectivesScanner.nextLine();
while ( storyScanner.hasNextLine() ) {
storyArray.add(storyScanner.nextLine());
}
System.out.println(storyArray);
for (int i = 0; i < storyArray.size(); i++) {
if (storyArray.get(i).equals("__")) {
storyArray.replaceAll(+ adjectivesArray);
break;
}
}
}
}
}
}

最新更新