Java 如何在spring boot中写入和读取json或txt文件?
我正在尝试使用SpringBoot在我的服务器中创建一个简单的手动缓存系统。 为了成功,我编写了两个不同的文件,一个用于缓存时间,另一个是数据。我计划写在第一个请求和其他请求在5分钟内将从文件调用 问题是流在本地主机中正常工作,但当我部署代码时,spring boot当然无法创建新文件并读取它 代码是我的写作和阅读,如下所示Java 如何在spring boot中写入和读取json或txt文件?,java,spring-boot,azure-web-app-service,Java,Spring Boot,Azure Web App Service,我正在尝试使用SpringBoot在我的服务器中创建一个简单的手动缓存系统。 为了成功,我编写了两个不同的文件,一个用于缓存时间,另一个是数据。我计划写在第一个请求和其他请求在5分钟内将从文件调用 问题是流在本地主机中正常工作,但当我部署代码时,spring boot当然无法创建新文件并读取它 代码是我的写作和阅读,如下所示 @Override public void writeFile( String folder, String path, String data ) throws IOE
@Override
public void writeFile( String folder, String path, String data ) throws IOException {
File file = new File( folder );
if ( !file.exists() ) {
if ( file.mkdir() ) {
System.out.println( "Directory is created!" );
} else {
System.out.println( "Failed to create directory!" );
}
}
BufferedWriter writer = new BufferedWriter( new FileWriter( path ) );
writer.write( data );
writer.flush();
writer.close();
}
@Override
public String readFile( File file ) {
BufferedReader reader = null;
StringBuilder buffer = new StringBuilder();
try {
reader = new BufferedReader( new FileReader( file ) );
String text;
while ( ( text = reader.readLine() ) != null ) {
buffer.append( text );
}
} catch ( IOException e ) {
e.printStackTrace();
} finally {
try {
if ( reader != null ) {
reader.close();
}
} catch ( IOException e ) {
e.printStackTrace();
}
}
return buffer.toString();
}
当我在Localhost中调用write file方法时,它正在创建必要的文件和文件夹。在下图中,它正在创建lastsavedtime.txt和readerlist.json
和readFile方法成功读取文件。
同一进程在服务器上不工作
Spring启动版本:2.0.5.0版本
Azure Web应用程序作为服务器
谢谢您的帮助。有关评论的补充说明
@RequestMapping(value="/newFile", method=RequestMethod.GET)
public String newFile(String folder, String path, String data){
// File file = new File("D:/home/site/wwwroot/testfile");
File file = new File( folder );
file.mkdirs();
try {
// BufferedWriter writer = new BufferedWriter( new FileWriter("D:/home/site/wwwroot/testfile/cout.txt") );
BufferedWriter writer = new BufferedWriter( new FileWriter( path ) );
writer.write( data );
writer.flush();
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "hello world";
}
是否有任何错误/异常消息?您要写入的文件路径是什么?IMHO缓存不应该发生在文件中。缓存应该发生在内存中。如果你真的想把数据写入一个文件,那么这个文件应该在resources文件夹中。我试过了,我认为它可能与文件路径有关,如果是这样,你可以尝试使用绝对路径,比如“file file=new file”(“src/main/resources/templates/testfile”)”和“BufferedWriter=new BufferedWriter”(new FileWriter(“src/main/resources/templates/testfile/cout.txt”);“Cloud您可以给我们展示一个输入参数‘writeFile’的示例,本地主机和服务器中的文件夹、路径是什么?我在自己的位置尝试过,并添加了“try-catch”“我发现异常来自文件夹,例如,在我的本地主机中,我可以使用src/../xx.txt,但部署后,我使用了kudu,发现在'\home\site\wwwroot'中只存在一个'app.jar',因此程序无法创建文件夹和文件。然后我尝试更改文件夹,如'D:/home/site/wwwroot/testfile/cout.txt',然后成功了。顺便说一句,最好使用“file.mkdirs()”创建文件夹。/home/site/wwwroot路径有效!非常感谢:D