gpt4 book ai didi

Java:通过类中的多个方法将文本写入文件而不使用 main() 方法

转载 作者:行者123 更新时间:2023-12-01 18:05:37 25 4
gpt4 key购买 nike

我目前正被一个 Java 编程问题困在水里,这个问题乍一看似乎很简单!我正在尝试从不包含 main() 的类中的多个方法将文本写入文件。方法,与此类问题的其他答案不同。

所以...我的程序当前正在执行的操作的快速概述:我的程序有一个类(显然带有 main() 方法),它读取存储在磁盘上的文本文件,并将文本部分传递给另一个类(项目中的第二个文件)中的某些方法,以简单地将传递的文本写入一个文本文件。类中的每个方法都没有 main()方法需要将传递给它们的字符串写入同一个文件。

为什么我遇到麻烦了?我可以轻松地通过类中的一个方法将文本写入文件,而无需 main()FileWriter ,但为了让我的所有其他方法写入同一个文件,我需要制作 FileWriter全局的。我尝试将其设为全局,但是当我在另一种方法保存文本后保存文本时,它只是将文件重写为最新写入的文本。

我当前的类(class)没有 main()方法:

package ADIFTOCSV;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class createADIF {

static File file;
static FileWriter fw;
static BufferedWriter writer;

static void init() throws IOException {
file = new File("/Users/Colin/Desktop/Myadif.txt");
fw = new FileWriter(file.getAbsoluteFile());
writer = new BufferedWriter(fw);
}



static void storeDate(String datez) throws IOException {

writer.write("<QSO_DATE:" + datez.length() + ">" + datez); <<----NULL POINTER EXCEPTION
}

static void storeFreq(String freqz) throws IOException {

writer.write("<FREQ:" + freqz.length() + ">" + freqz);
writer.close();
}

static void storeMode(String modez) {

}

static void storeBand(String bandz) {

}

static void storePower(String pwrz) {

}

static void storeTime(String timez) {

}

static void storeCall(String callz) {

}

static void storeRstSent(String rstsentz) {

}

static void storeRstRcvd(String rstrcvdz) {

}

static void storeComments(String commentsz) {

}
}

每个方法都需要写 String传递给他们到同一个文件。

storeDate()是第一个被调用的方法,因此它首先将文本写入文件。然而,当 storeFreq()被调用,它的文本完全替换了 storeDate() 编写的文本。这是显而易见的,因为我被迫在每个方法中创建一个新的 FileWriter 对象才能写入文本。我不能输入 FileWriter fw = new FileWriter(file.getAbsoluteFile());在方法之外使其成为全局的;出现错误。

我错过了什么吗?非常感谢您的帮助。如果出现任何问题或需要澄清,请提出!

最佳答案

您必须在方法之外创建编写器。仅在外部定义文件是不够的。如果您在每个方法中重新创建同一文件的编写器,它当然会覆盖。File 实例只是一个指向文件的指针。writer 是您需要重用的“实际句柄”。

请注意,如果您完成写入,则必须关闭 writer。

关于Java:通过类中的多个方法将文本写入文件而不使用 main() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36658437/

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