Java:在没有main()方法的情况下,从类中的多个方法向文件写入文本
我目前正陷于一个Java编程问题中,这个问题一开始似乎有点简单!我试图从一个不包含Java:在没有main()方法的情况下,从类中的多个方法向文件写入文本,java,printwriter,Java,Printwriter,我目前正陷于一个Java编程问题中,这个问题一开始似乎有点简单!我试图从一个不包含main()方法的类中的多个方法向文件写入文本,这与其他此类问题的答案不同 所以。。。快速概述我的程序当前正在执行的操作: 我的程序有一个类(显然带有main()方法),它读取存储在磁盘上的文本文件,并将文本部分传递给另一个类(项目中的第二个文件)中的某些方法,以便将传递的文本写入文本文件。类中没有main()方法的每个方法都需要将传递给它们的字符串写入同一个文件 为什么我有麻烦?我可以很容易地从类中的一个方法将文
main()
方法的类中的多个方法向文件写入文本,这与其他此类问题的答案不同
所以。。。快速概述我的程序当前正在执行的操作:
我的程序有一个类(显然带有main()
方法),它读取存储在磁盘上的文本文件,并将文本部分传递给另一个类(项目中的第二个文件)中的某些方法,以便将传递的文本写入文本文件。类中没有main()
方法的每个方法都需要将传递给它们的字符串写入同一个文件
为什么我有麻烦?我可以很容易地从类中的一个方法将文本写入文件,而无需使用FileWriter
的main()
,但为了让所有其他方法都写入同一个文件,我需要将FileWriter
设置为全局。我试图使其全局化,但当我在另一个方法保存文本之后保存文本时,它只是将文件重写为最新编写的文本
我当前的类没有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) {
}
}
package ADIFTOCSV;
导入java.io.BufferedWriter;
导入java.io.File;
导入java.io.FileWriter;
导入java.io.IOException;
公共类createADIF{
静态文件;
静态文件写入程序;
静态缓冲写入程序;
静态void init()引发IOException{
file=新文件(“/Users/Colin/Desktop/Myadif.txt”);
fw=新的FileWriter(file.getAbsoluteFile());
写入程序=新的缓冲写入程序(fw);
}
静态void storeDate(字符串datez)引发IOException{
write(“+datez);您必须在方法之外创建writer。
仅仅在外部定义文件是不够的。
如果在每个方法中为同一个文件重新创建一个writer,它当然会覆盖。
文件
实例只是指向该文件的指针。
writer是您需要重用的“实际句柄”
请注意,如果完成了编写,则必须关闭编写器。必须在方法之外创建编写器。
仅仅在外部定义文件是不够的。
如果在每个方法中为同一个文件重新创建一个writer,它当然会覆盖。
文件
实例只是指向该文件的指针。
writer是您需要重用的“实际句柄”
请注意,如果您完成了编写,您必须关闭writer。我建议您使用静态方法废弃该类,而是创建一个普通的“文件写入处理程序”类,该类具有一个构造函数,您可以在其中传递文件和编写器以初始化文件写入类,并让该类处理对文件的所有写入,以便您可以调用如下方法:
FileWriteHandler.writer("<FREQ:" + freqz.length() + ">" + freqz);
会更干净,您甚至可以为该类创建一个接口,这样您就可以用f.ex.DatabaseWriteHandler或类似的东西替换FileWriteHandler。我建议您使用静态方法废弃该类,而是创建一个普通的“文件写入处理程序”类,该类具有一个构造函数,您可以在其中传递文件和编写器以初始化文件写入类,并让该类处理对文件的所有写入,以便您可以调用如下方法:
FileWriteHandler.writer("<FREQ:" + freqz.length() + ">" + freqz);
会更干净,你甚至可以为该类创建一个接口,这样你就可以用f.ex.DatabaseWriteHandler或类似的东西替换FileWriterHandler。你的问题只是在你的脑海中产生的。如果你遇到任何错误,试着运行你的程序并报告。请提供你实际如何创建和使用Pri的代码NtWriter您如何展示您实际尝试过的代码。@BjörnKautler没问题!我会编辑代码。我以前在那里有PrintWriter代码,但由于它在我的项目中不起作用,我放弃了它。我将添加它,我想我的答案已经是您的解决方案了。;-)但目前它主要基于猜测您在做什么。gyour麻烦只是在你的头脑中产生的。试着运行你的程序,如果你有任何错误,请报告。请提供你如何实际创建和使用PrintWriter的代码。关于你如何展示你实际尝试过的代码。@BjörnKautler没问题!我会编辑代码。我以前在那里有PrintWriter代码,但因为它在我的p我想我的答案已经是你的解决方案了,但目前主要是基于猜测你在做什么