所有..任务 - 打开文件,但不要写任何东西。当数据来自一个线程并请求记录它时,将其写入该文件。请求停止记录时,请关闭该文件。文件应该最初以追加模式打开。我用多种语言编写了这样的代码,但没有用Java编写。我遇到的所有内容都谈到了打开,写入和关闭的单一方法。我需要的是打开一个文件并返回一个指向该文件的指针(FileWriter)。稍后使用该文件指针同时写入并最终关闭该文件。我的代码如下:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class LogIt
{
public static FileWriter outLog = null;
public static void main(String[] args) throws IOException
{
Logging lFile = new Logging() ;
Logging.OpenLogFile(primeClass.theLogFile);
Logging.CloseLogFile() ;
}
// end main
public static void OpenLogFile(String filename) throws IOException
{
// open output file
try
{
// if file doesn't exists, then create it
File file =new File(filename);
if (!file.exists())
{
file.createNewFile();
System.out.println("Logfile " + filename + " did not exist!");
}
FileWriter outLog = new FileWriter(filename, true);
System.out.println("logFile " + filename + " has been opened for append mode");
}
catch (IOException e)
{
System.out.println("Unable to Open log file " + filename);
System.err.println("Error: " + e.getMessage());
}
}
// End of OpenLogFile
public static void WriteLogFile(String line2Write) throws IOException
{
// write output to opened file
try
{
outLog = new FileWriter(line2Write);
outLog.write(line2Write);
}
catch (IOException e)
{
System.out.println("Unable to write to " + PrimeClass.theLogFile);
System.out.println("Error: " + e.getMessage());
}
} // end OpenLogFile
public static void CloseLogFile() throws IOException
{
try
{
outLog.close();
System.out.println("file closed");
}
catch (IOException e)
{
System.out.println("Unable to close logfile " + PrimeClass.theLogFile);
System.out.println("Error: " + e.getMessage());
}
}
// end CloseLogFile
}
// end LogIt class
该类编译,如果文件不存在,则创建它。但是,如果不写入文件,尝试关闭文件会导致空指针异常。我正在考虑构建2个方法来设置和获取" outLog"值。此外,似乎在发生写入时,它实际上开始使用输出在目录上生成文件而不是写入实际文件。
建议?
答案 0 :(得分:0)
您要声明本地FileWriter
而不是分配给成员变量。
注意如果文件不存在,则无需创建该文件。 `new FileWriter()'已经做到了。