import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import java.io.*;
import java.net.MalformedURLException;
import java.net.URLEncoder;
import java.nio.file.Path;
import java.nio.file.Paths; @RestController
@RequestMapping("file")
public class FileController1 { private static final String directory = "D:/"; /**
* 获取文件列表
*/
@GetMapping("files")
public ResponseEntity<?> list(@RequestParam(required = false) String filename) throws Exception {
final File file = new File(directory, filename == null ? "" : filename);
if (file.isDirectory()) {
return ResponseEntity.ok().contentType(MediaType.TEXT_HTML).body(buildHtml(file));
} else {
if (file.length() > 5 * 1024 * 1024) {
final String name = file.getName();
return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION,
"attachment;filename*=UTF-8''" + URLEncoder.encode(name, "UTF-8")).body(download(file));
} else {
BufferedReader br = new BufferedReader(new FileReader(file));
final StringBuilder sb = new StringBuilder();
String st;
while ((st = br.readLine()) != null) {
sb.append(st).append("\n");
}
return ResponseEntity.ok().header("Content-Type", "text/plain;charset=UTF-8").body(sb.toString());
}
}
} private Resource download(File file) throws MalformedURLException {
final String parent = file.getParent();
final String name = file.getName();
final Path path = Paths.get(parent).resolve(name);
return new UrlResource(path.toUri());
} public String buildHtml(File file) {
final StringBuilder sb = new StringBuilder("<!DOCTYPE html><html lang='zh'><head><meta charset='UTF-8'></head><body><ul>");
final File[] files = file.listFiles();
final String parent = file.getParent();
if (parent != null) {
final String url = parent.substring(directory.length()).replaceAll("[\\\\/]", "%5C");
sb.append("<li><a href='/file/files?filename=").append(url).append("'>· ·</a></li>");
}
if (files != null) {
for (File file1 : files) {
final String filePath = file1.getPath().substring(directory.length());
final String fileUrl = filePath.replaceAll("[\\\\/]", "%5C");
sb.append("<li><a href='/file/files?filename=").append(fileUrl).append("'>").append(file1.getName()).append("</a></li>");
}
}
sb.append("</ul></body></html>");
return sb.toString();
}
}

java 实现读取本地日志文件列表并在浏览器上显示的更多相关文章

  1. nodejs读取本地txt文件并输出到浏览器

    var fs = require('fs'); var chrome=""; //同步执行 function tongbu(){ var data =fs.readFileSync ...

  2. JAVA读取本地html文件里的html文本

    /** * 读取本地html文件里的html代码 * @param file File file=new File("文件的绝对路径") * @return */ public s ...

  3. jmeter读取本地CSV文件

    用jmeter录制考试上传成绩等脚本时,出现的问题及解决方法如下: 1.beanshell前置处理器,不能读取本地csv文件里的数据: 方法一: 在beanshell里不能直接从本地的csv文件里读取 ...

  4. Java学习-042-获取目录文件列表(当前,级联)

    以下三个场景,在我们日常的测试开发中经常遇到: 软件自动化测试,在进行参数测试时,我们通常将所有相似功能的参数文件统一放在一个目录中,在自动化程序启动的时候,获取资源参数文件夹中所有参数文件,然后解析 ...

  5. 读取本地json文件,并转换为dictionary

    // 读取本地JSON文件 - (NSDictionary *)readLocalFileWithName:(NSString *)name { // 获取文件路径 NSString *path = ...

  6. jQuery ajax读取本地json文件

    jQuery ajax读取本地json文件 json文件 { "first":[ {"name":"张三","sex": ...

  7. node.js读取到的文件列表

    var fs = require('fs'); var path = require('path'); //解析需要遍历的文件夹,我这以E盘根目录为例 var filePath = path.reso ...

  8. JavaScript读取本地json文件

    JavaScript读取本地json文件 今天调试了一上午,通过jQuery读取本地json文件总是失败,始终找不出原因,各种方法都试了 开始总以为是不是json格式的问题.高了半天不行 后来读了一个 ...

  9. 读取本地json文件,转出为指定格式json 使用Base64进行string的加密和解密

    读取本地json文件,转出为指定格式json   引用添加Json.Net 引用命名空间 using Newtonsoft.Json //读取自定目录下的json文件StreamReader sr = ...

  10. Bootstrap做的HTML页面在本地IE打开正常,放到服务器上显示就不正常了

    <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Com ...

随机推荐

  1. 阿里云oss初使用

    一.购买 二.配置RAM权限 https://ram.console.aliyun.com/users 1.创建用户 2.创建完成后注意获取AccessKey ID.AccessKey Secret( ...

  2. SpringBoot启动失败问题

    SpringBoot启动失败问题 一.现象 pom.xml没有显示报错,也能查看到各种需要的依赖jar包,但在启动时显示 二.原因 网络不好导致maven导包失败或者导包不完整 三.解决办法 进入项目 ...

  3. go+redis实现消息队列发布与订阅

    在做项目过程中,实现websocket得时候,不知道哪里写的不太合适,客户端消息收到一定程度,剩下的消息收不到,修改了缓冲区大小,还是没有解决问题,后面因为项目结束期比较紧张,没有时间调试消息的时候, ...

  4. git 的提交与合并

    1,创建远程仓库   不论是用命令行还是码云之类的都可以 2,git clone url   这是将远程仓库库提交到本地 3, git checkout -b dev   创建dev分支并切换到dev ...

  5. java之路总结

    2019-12-5 20:50:47 2019-10-7 18:01:37 总结学习java的各种知识! 越努力,越幸运! 永远不要高估自己! 吃的苦中苦,方为人上人! java基础 java进阶 j ...

  6. 快速替换jar包class文件的方法

    stetp1:jar -tvf *.jar | grep *.class 查找jar包中,class文件所在的具体路径stetp2:jar -xvf *.jar */*/*/*.class 当前目录下 ...

  7. 【GROMACS】分子动力学模拟①——环境搭建

    系统环境 Win11 22H2 企业版 开启虚拟化.window subsystem for liunx等虚拟机相关的功能 应用商店中安装WSL2 安装步骤 打开Ubuntu,输入sudo apt f ...

  8. lombok安装不了的问题

  9. 12组-Beta冲刺-2/5

    一.基本情况 队名:字节不跳动 组长博客:https://www.cnblogs.com/147258369k/p/15594989.html Github链接:https://github.com/ ...

  10. 2、Maven