java 在哪里以及如何存储定期在Sping Boot 应用程序中创建的txt文件[已关闭]

fslejnso  于 2023-05-15  发布在  Java
关注(0)|答案(1)|浏览(123)

已关闭,此问题需要更focused。目前不接受答复。
**想改善这个问题吗?**更新问题,使其仅通过editing this post关注一个问题。

43分钟前关闭
Improve this question
我有一个定期创建统计数据的txt文件的计划任务。我必须将一些内容写入txt文件并将其存储在某个地方。每次创建一个新的txt文件,文件名为“statistics-'new Date()'. txt”。我不知道如何创建和存储它们。

@Service
public class NewsSourceServiceImpl implements NewsSourceService {

    private final NewsSourceRepository newsSourceRepository;
    private final ThreadPoolTaskScheduler threadPoolTaskScheduler;
    private final CronTrigger cronTrigger;

    public NewsSourceServiceImpl(NewsSourceRepository newsSourceRepository, ThreadPoolTaskScheduler threadPoolTaskScheduler, CronTrigger cronTrigger) {
        this.newsSourceRepository = newsSourceRepository;
        this.threadPoolTaskScheduler = threadPoolTaskScheduler;
        this.cronTrigger = cronTrigger;
    }

    @PostConstruct
    private void statisticalTask() {
        threadPoolTaskScheduler.schedule(new StatisticalTask(), cronTrigger);
    }

    private class StatisticalTask implements Runnable {

        @Override
        public void run() {
            List<Statistics> statisticalTasks = newsSourceRepository.countNewsForStatistics();
            // Here I have to create a txt file and 'statisticalTasks' contents. Then store the files.
        }
    }

}

当我们尝试存储日志文件时,我尝试使用'logback-spring.xml'。但是,我认为这种做法在这里并不合适。

bf1o4zei

bf1o4zei1#

1.你可以保存在任何你想要的地方,好的做法是在项目根目录中创建一个合适的文件夹,如stats。因此,绝对路径可能类似于/home/user/IdeaProjects/project-name/stats/file-name.txt
1.您可以使用java.io包中的内置FileWriter

String directoryPath = "stats";
        String fileName = "file-name.txt";

        File directory = new File(directoryPath);
        if (!directory.exists()) {
            directory.mkdirs(); // Create the directory if it doesn't exist
        }

        File file = new File(directory, fileName);

        try (Writer writer = new BufferedWriter(new FileWriter(file))) {
            String newLine = System.getProperty("line.separator");
            String contents = "first line"
                    + newLine
                    + "next line";

            writer.write(contents);
        } catch (IOException e) {
            e.printStackTrace();
        }

相关问题