Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在spring boot中写入和读取json或txt文件?_Java_Spring Boot_Azure Web App Service - Fatal编程技术网

Java 如何在spring boot中写入和读取json或txt文件?

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

我正在尝试使用SpringBoot在我的服务器中创建一个简单的手动缓存系统。 为了成功,我编写了两个不同的文件,一个用于缓存时间,另一个是数据。我计划写在第一个请求和其他请求在5分钟内将从文件调用

问题是流在本地主机中正常工作,但当我部署代码时,spring boot当然无法创建新文件并读取它

代码是我的写作和阅读,如下所示

 @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