C# 怎么在一个文件夹中查到日期最新的文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 怎么在一个文件夹中查到日期最新的文件相关的知识,希望对你有一定的参考价值。

参考技术A 用linq最简单

using System.IO;
using System.Linq;

namespace ConsoleApplication1

class Program

static void Main(string[] args)

DirectoryInfo info = new DirectoryInfo(@"C:\");
FileInfo newestFile = info.GetFiles().OrderBy(n => n.LastWriteTime).First();




不用linq
using System.IO;
using System.Linq;
using System;

namespace ConsoleApplication1

class Program

static void Main(string[] args)

DirectoryInfo info = new DirectoryInfo(@"C:\");
FileInfo[] files = info.GetFiles();
DateTime time = new DateTime(1900, 1, 1);
FileInfo newestFile = null;
foreach (FileInfo f in files)

if (f.LastWriteTime > time)

time = f.LastWriteTime;
newestFile = f;




本回答被提问者采纳

文件下载——下载Excel

1、首先准备好数据。这里的数据不是直接从数据库中查到的数据而是将查到的数据复制一份,两者的数据互不影响,这样有利于复制之后的数据可以修改。

  ① 定义一个从数据库中查到的数据的方法(service层的实现类方法),这里省略mapper映射文件和dao层接口的方法  

/**
 * 参数是实体类,根据参数条件获取所有的数据。forEach方法只是循环遍历获取的元素,可以根据业务需求修改元素的属性值
 * /
public List<User> export(User user) {
    List<User> userList = userDao.selectAll(user);
    userList.stream().forEach(e->{
        // 密码回显字符表示
        e.setPassword(e.getPassword().replaceAll(e.getPassword(), "******"));
    });
    return userList;
}

  ② 定义一个复制数据的方法,方法中可以使用Spring框架提供的BeanUtils包的copyProperties方法来复制对象的属性

/**
 * 复制属性的方法
 */
public List<User> queueExcel(User user) {
    List<User> userList = export(user);
    List<User> exportList = new ArrayList<>();
    userList.stream().forEach(e->{
        // 定义一个user对象,以供接受对象的属性
        User user = new User();
//对象属性复制 BeanUtils.copyProperties(e, user); exportList.add(user); }); return exportList; }

 

2、准备好了数据,就需要定义好一个方法,方法的内容是:与数据对应的表头;文件Excel导出到response中。

@RequestMapping(value = "/queueExcel",method = RequestMethod.POST)
@ResponseBody
public void queueExcel(@RequestBody User user, HttpServletResponse response){
    try{
        List<User> exportList = userService.queueExcel(user);
        LinkedHashMap<String, String> columnMap = new LinkedHashMap<>();
        columnMap.put("userId", "工号");
        columnMap.put("username", "用户名");
        columnMap.put("realName", "真实姓名");
        columnMap.put("password", "用户密码");
        columnMap.put("gender", "性别");

        //设置导出文件名称
        String fileName = "测试.xlsx";

        //导出Excel到HttpServletResponse
        utils.excel.ExcelUtil.exportExcelToHttpServletResponse(exportList, columnMap, fileName, response);
        response.getOutputStream().flush();
    } catch (Exception me) {
        me.printStackTrace();
    }
}

 

3、上述缺少一个导出Excel文件到HttpServletResponse对象中,这时需要在定义好的包下创建类和方法。

/**
 * 导出Excel到HttpServletResponse
 *
 * @param dataList  数据列表
 * @param columnMap 输出列及其中文列名,按顺序输出
 * @param fileName  文件名
 * @param <T>
 */
public static <T> void exportExcelToHttpServletResponse(List<T> dataList, LinkedHashMap<String, String> columnMap, String fileName, HttpServletResponse response) {
    if (null == dataList) {
        return;
    }
    try {
        //写到字节输出流
        ByteArrayOutputStream byteArrayOutputStream = exportExcelOutputStream(dataList, columnMap);
        if (null == byteArrayOutputStream) {
            return;
        }
        //导出文件流到HttpServletResponse
        //防止乱码,设置HttpServletResponse编码
        response.setCharacterEncoding("utf-8");
        response.setContentType("multipart/form-data");
        //设置页面禁止缓存
        response.setDateHeader("Expires", 0);
        response.setHeader("Cache-Control", "no-cache");
        response.setHeader("Pragma", "no-cache");
        //设置下载文件名
        response.setHeader("Content-Disposition", "attachment;filename=" +
                new String(fileName.getBytes("gb2312"), "ISO8859-1"));
        //文件输出流写入HttpServletResponse
        byteArrayOutputStream.writeTo(response.getOutputStream());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

 

4、好像又缺少了一个写到字节流的方法

/**
 * 导出为Excel输出流
 *
 * @param dataList  数据列表
 * @param columnMap 输出列及其中文列名,按顺序输出
 * @param <T>
 * @return oss文件url
 */
public static <T> ByteArrayOutputStream exportExcelOutputStream(List<T> dataList, LinkedHashMap<String, String> columnMap) {
    ByteArrayOutputStream byteArrayOutputStream = null;
    if (null == dataList) {
        return null;
    }
    try {
        // 通过工具类创建writer,创建xlsx格式
        ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(true);
        //
        if (null != columnMap) {
            //设置列标题
            for (Map.Entry<String, String> entry : columnMap.entrySet()) {
                writer.addHeaderAlias(entry.getKey(), entry.getValue());
            }
            //根据列标题,筛选过滤数据列
            ArrayList<Map<String, Object>> rows = new ArrayList<>();
            Map<String, Object> tempMap1 = null;
            Map<String, Object> tempMap2 = null;
            String column;
            for (T data : dataList) {
                tempMap1 = BeanUtil.beanToMap(data);
                tempMap2 = new LinkedHashMap<>();
                for (Map.Entry<String, String> entry : columnMap.entrySet()) {
                    column = entry.getKey();
                    tempMap2.put(column, tempMap1.get(column));
                }
                rows.add(tempMap2);
            }
            //输出筛选过滤后的数据
            writer.write(rows);
        } else {
            //不过滤列,直接输出数据
            writer.write(dataList);
        }
        //写到字节输出流
        byteArrayOutputStream = new ByteArrayOutputStream();
        writer.flush(byteArrayOutputStream);
        //关闭writer,释放内存
        writer.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    //
    return byteArrayOutputStream;
}

 

  

以上是关于C# 怎么在一个文件夹中查到日期最新的文件的主要内容,如果未能解决你的问题,请参考以下文章

文件下载——下载Excel

文件下载——下载Excel

vc中已知文件的绝对路径怎么获得文件名和所在文件夹啊

c# 弹出选择窗口

SQL如何将一个数据库中查到的结果加入到另一个数据库?

API 函数,我怎么在MSDN中查不到!