如何使用Grails读取本地文件?

如何使用Grails读取本地文件?,grails,file-io,groovy,Grails,File Io,Groovy,当我的Grails应用程序启动时,我从从远程URL下载的CSV文件中构建数据结构。如果无法访问该文件,我希望返回到本地副本。当前正在处理服务层中的文件,使用Quartz作业启动 使用Groovy读取Grails中的本地资源的最佳实践是什么? 我应该把文件藏在哪里 如何安全正确地读取文件 一般情况下的答案是可以接受的。我认为最好的处理方法是将文件的位置存储在一个文件夹中 因此,您需要确定一个标准化的位置(例如/etc/myappname/CSVFileConfig.groovy),或者使用环境

当我的Grails应用程序启动时,我从从远程URL下载的CSV文件中构建数据结构。如果无法访问该文件,我希望返回到本地副本。当前正在处理服务层中的文件,使用Quartz作业启动

使用Groovy读取Grails中的本地资源的最佳实践是什么?

  • 我应该把文件藏在哪里
  • 如何安全正确地读取文件

一般情况下的答案是可以接受的。

我认为最好的处理方法是将文件的位置存储在一个文件夹中

因此,您需要确定一个标准化的位置(例如
/etc/myappname/CSVFileConfig.groovy
),或者使用环境变量或类似的东西传递配置文件路径。有关示例,请参见

然后,您可以简单地将本地文件的实际路径添加到该扩展配置中,如下所示:

// CSVFileConfig.groovy
my.custom.csv.path = ...
最后,使用常规配置操作访问它:

// in your Quartz job
def path = grailsApplication.config.my?.custom?.csv?.path
if(!path) {
    // no file to load
} else {
    // load file
}
至于阅读文件,您主要关心的是什么?如果您使用的是CSV库,例如OpenCSV(在中使用),它将处理文件的打开和解析


对于除此之外的安全问题,我不确定如何以通用方式处理它们。这将取决于您的具体情况。我认为来自URL的文件具有更高的风险因素。

好吧,您仍然没有提供太多关于回答“如何安全和正确地读取文件”的信息,但是您可以使用
新文件(路径)读取文件。使用reader{reader->…}
,它负责打开和关闭文件。如果这里缺少详细信息,请原谅。一般来说,为我编写解决方案是不舒服的。Grails/Groovy新手,但我是一个狂热的程序员,所以我正在寻找选择一种策略而不是另一种策略的原因。感谢您的帮助。我强烈推荐Groovy in Action和Grails in Action书籍。他们会帮你走的。Groovy不仅仅是对Java的语法更改。withWriter的
方法是Groovy JDK对Java的扩展的一部分。