2014-10-11 58 views
0

所有..任务 - 打开文件,但不写任何东西。当数据来自线程并请求登录时,将其写入文件。当请求停止记录时,关闭文件。文件应该以附加模式初始打开。我已经用多种语言编写了这样的代码,但没有用Java编写。我遇到的每件事都谈到了一种打开,写入和关闭的方法。我需要的是打开一个文件并返回一个指向该文件(FileWriter)的指针。稍后使用该文件指针来写入并最终关闭文件。我的代码如下:Java - 一种方法打开文件另一个写和另一个关闭

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”值。而且,看起来在写入发生时,它实际上开始使用输出在目录上生成文件而不是写入实际文件。

对此提出建议?

+1

请问您可以用真实问题的形式重写您的问题,您会问正常人面对面,而不是这些单一factoid句子?我们喜欢帮助,但是您需要付出一些努力来提出一个我们可以轻松理解的问题(可以详细说明,我们更喜欢大量的细节而不是详细的细节) – 2014-10-11 05:43:24

回答

0

您声明本地FileWriter而不是分配给成员变量。

注意如果文件不存在,则不需要创建该文件。 `新的FileWriter()'已经做到了。

相关问题