Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
在Spring Boot中,你可以使用java.nio.file.Files
和java.nio.file.Paths
来读取本地目录的文件和文件结构。以下是一个简单的例子,展示了如何列出目录下的所有文件和子目录,并将其信息转换为一个JSON格式的字符串,以供前端渲染。
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
@RestController
public class DirectoryController {
private static final ObjectMapper objectMapper = new ObjectMapper();
private static final Path DOCUMENT_DIRECTORY = Paths.get("path/to/your/directory");
@GetMapping("/directory-data")
public String getDirectoryData() throws IOException {
Map<String, Object> directoryData = new HashMap<>();
directoryData.put("directories", listDirectories(DOCUMENT_DIRECTORY));
directoryData.put("files", listFiles(DOCUMENT_DIRECTORY));
return objectMapper.writeValueAsString(directoryData);
}
private Object listDirectories(Path dir) throws IOException {
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
return stream.filter(Files::isDirectory)
.map(Path::getFileName)
.map(Path::toString)
.toArray();
}
}
private Object listFiles(Path dir) throws IOException {
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
return stream.filter(Files::isRegularFile)
.map(Path::getFileName)
.map(Path::toString)
.toArray();
}
}
}
在这个例子中,getDirectoryData
方法通过@GetMapping
注解暴露为一个REST接口。它首先使用listDirectories
和listFiles
方法来获取目录和文件列表,然后将这些信息转换为JSON格式的字符串。
确保你的Spring Boot应用有足够的权限来访问指定的目录。此外,你可能需要处理并发访问目录时可能出现的IOException
。
评论已关闭