0

当我将用户添加到数组列表时,我有这段代码要写入文件。代码工作正常:

public void writeToFile(String content)
    {
        try {
            File file = new File("H:/JavaWorkspace/TradingPlatformProject/User_Report.txt");

            if (!file.exists()) {
                file.createNewFile();
            }
            FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(content + "\n" );

            bw.close();
            logger.info("Recorded to User Activity file");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

当用户执行不同的操作(例如,请求权限升级)时,我想写入一个单独的文件。有什么方法可以在不复制此代码的情况下写入新文件“UserRequests.txt”?

4

3 回答 3

7

为什么不使方法更通用?

  public void writeToFile(String content, String fileName, String path)
  {
        try {
            File file = new File(path + fileName);

            if (!file.exists()) {
                file.createNewFile();
            }
            FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(content + "\n" );

            bw.close();
            logger.info("Recorded to User Activity file");
        } catch (IOException e) {
            e.printStackTrace();
        }
  }

然后你可以使用写各种文件的方法:3

于 2013-06-14T15:05:21.793 回答
1

您可能应该只使用第二个参数,如下所示。此外,您应该在 finally 块中关闭您的 Writer。这样,即使在写入时发生异常,您也可以确保 Writers 已关闭。

public void writeToFile(String content, String path)
{
    FileWriter fw
    BufferedWriter bw 
    try {
        File file = new File(path);

        if (!file.exists()) {
            file.createNewFile();
        }
        fw = new FileWriter(file.getAbsoluteFile(), true);
        bw = new BufferedWriter(fw);
        bw.write(content + "\n" );

        bw.close();
        logger.info("Recorded to User Activity file");
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        bw.close();
        fw.close();
    }
}
于 2013-06-14T15:13:05.360 回答
0

我只需传入您要写入的文件:

public void writeToFile(String content, String filename){

接着:

File file = new File("H:/JavaWorkspace/TradingPlatformProject/"+filename);
于 2013-06-14T15:05:54.970 回答