gpt4 book ai didi

java - 如何从同一文件中的另一行中删除一行文件?

转载 作者:行者123 更新时间:2023-11-30 07:29:10 25 4
gpt4 key购买 nike

我有一个具有以下格式的文本文件:

字符串1

字符串1字符串2

字符串1字符串2字符串3

...

字符串1字符串2字符串3.....字符串(i)...字符串(n)

我想删除该文件的某些部分以具有以下格式(结果文件):

字符串1

字符串2

字符串3

...

字符串(i)

字符串(n)

我尝试使用此功能,但我的输出文件始终为空:

public static void FileFormatted(String inputFile,String outputFile)
{
String FileContent = readFile(inputFile,
StandardCharsets.UTF_8);
String[] FileSentences = FileContent.split("[\n]");
for (int i = 0; i < FileSentences.length; i++)
{


StringBuilder builder = new StringBuilder();
for(int j=1;j<FileSentences.length;j++)
{
int index= FileSentences[j].indexOf("FileSentences[i]");
String temp=FileSentences[j].substring(index);
FileSentences[j]=FileSentences[j].replaceAll(temp," ");
builder.append(FileSentences[j]+ "\n");
}
writeIntoFile(builder, outputFile, true);

}


}
public static void writeIntoFile(StringBuilder stringBuilder,
String txtFilePath, boolean append) {
File file = new File(txtFilePath);

// if file doesn't exists, then create it
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
FileWriter fw;
try {
fw = new FileWriter(file.getAbsoluteFile(), append);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(stringBuilder.toString());
bw.close();
} catch (IOException e) {
e.printStackTrace();
}

}

有人可以帮我吗?

最佳答案

好吧,首先一次性读取整个文件是不好的做法。假设您有一个 6GB 的文件,这意味着您在读入该文件时需要 6GB 的 RAM 来存储该文件。最好逐行读取该文件。

因此逻辑的目标将被逐行读取。当我们读取第一行时,我们可以得到它的长度。当我们读取第二行时,我们知道第一行的长度,这意味着它是第二行的起点。这意味着您可以使用子字符串方法,传递开始位置和结束位置。并对第 3,4,...n 行重复此逻辑

这样做的好处是你不会浪费内存,你只存储文本中行的大小。

更新

我已经编写了之前建议的代码。这是非常基本的,没有验证,所以你需要添加它。但它涵盖了基础知识

public static void main(String[] args) throws IOException {

FileReader fileReader = new FileReader("test.txt");
BufferedReader br = new BufferedReader(fileReader);

int startPosition = 0;
String line;
ArrayList<String> items = new ArrayList<String>();
while((line = br.readLine() ) != null)
{
items.add(line.substring(startPosition, line.length()));
System.out.println(line.substring(startPosition, line.length()));
startPosition = line.length();

}

write("test2.txt", items);
}

public static void write (String filename, ArrayList<String> items) throws IOException{

BufferedWriter outputWriter = null;
outputWriter = new BufferedWriter(new FileWriter(filename));

for (String item : items) {

outputWriter.write(item);
outputWriter.newLine();
}
outputWriter.flush();
outputWriter.close();
}

关于java - 如何从同一文件中的另一行中删除一行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36387731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com