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. gunicorn的功能及使用方法

    一.gunicorn的简介Gunicorn是基于unix系统,被广泛应用的高性能的Python WSGI HTTP Server.用来解析HTTP请求的网关服务.它通常是在进行反向代理(如nginx) ...

  2. think php框架接入微信支付中需要注意的问题(php 小白适用)

    接触php也有一段时间了,感觉有越来越多的地方需要学习,最近接入了微信扫码支付(pc端),记录一下,让php刚入门的小白们少走弯路. 准备阶段,到"微信公众平台"注册微信公众号,具 ...

  3. 手算推导BP神经网络

    一.神经元 下图的蓝色区域被称为一个"感知机"(Perceptron), 感知机是对信息进行编码.压缩.集成.融合的计算机智能接口系统. 说白了,就是在输入端输入X1~X7这7个输 ...

  4. seql sever INSERT语句简介

    INSERT语句简介 要向表中添加一行或多行,可以使用INSERT语句.下面说明了INSERT语句的最基本形式:   INSERT INTO table_name (column_list)   VA ...

  5. Springboot+Vue实现短信与邮箱验证码登录

    体验网址:http://mxyit.com 示例 1.新增依赖 <!-- 短信服务 --> <dependency> <groupId>com.aliyun< ...

  6. Dockerfile打包java应用

    #基础镜像 FROM openjdk:8-jre # 作者 MAINTAINER hg #挂载目录 VOLUME /home/hg #创建目录 RUN mkdir /home/hg #指定工作目录 W ...

  7. Thread记录

    项目用到了线程 所以写出来留作以后复习线程Thread类包含在System.Threading命名空间有关线程的操作主要包含在这个类中现在总结一下Thread的常用方法和属性 Start([参数])/ ...

  8. WebSocket 基本使用

    1. 引入 WebSocket 包 2. 2.最后测试 WebSocket 谷歌浏览器 F12 ,在 Console 控制台 输入以下测试链接,然后回车测试. ws = new WebSocket() ...

  9. 10个.NetCore实用的开源框架项目

    今天我们一起梳理下10个,比较受到大家欢迎的.NetCore开源框架项目.1.FytSoaCms 前后端分离CMS系统 项目简介 这是一个基于.Net 3构建的简单.跨平台.模块化建站系统.系统业务简 ...

  10. Python的入门学习Day 28~30——form”夜曲编程“

    Day 28 in Day 29 time: 2021.8.26. ​ 时间模糊了界限,虽我日渐走远.转眼而过的二十多天,既留下了夏天在沙滩上的足迹,同时也为黄金色的秋日铺上留白的画卷.键盘敲时,熟悉 ...