4 月更文挑战第23天 | 基于java的校园二手商品交易系统的开发12

103 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第23天,点击查看活动详情

这一章节校园二手商品交易系统的常见功能。

public void toJson(Object str) throws IOException{
	HttpServletResponse response=ServletActionContext.getResponse();
	response.setHeader("Cache-Control", "no-cache");  
	response.setHeader("Pragma", "no-cache");  
	response.setDateHeader("Expires", 0);  
	response.setContentType("text/html;charset=utf-8");
	
	String responseStr = JSON.toJSONString(str,filter,SerializerFeature.WriteNullStringAsEmpty);
	Writer writer = response.getWriter();
	writer.write(responseStr);
	writer.flush();
}

上面的功能主要是将JavaBean序列化为JSON文本,ServletActionContext.getResponse()这里是得到了http的response回应,然后设置缓存,表头,内容格式,接着对json文本以写入的形式,先写入,后刷新。

import java.io.File;
import java.util.ArrayList;

import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.EncoderException;
import it.sauronsoftware.jave.MultimediaInfo;

/**
 * 统计文件夹下视频的总时长
 */
public class TestVedioAllTime {
	private static ArrayList<String> filelist = new ArrayList<>();
	private static long totalTime;

	public static void main(String[] args) {
		String path = "I:\\尚硅谷新视频\\尚硅谷2020谷粒商城项目(重新校对版)\\分布式基础篇";// 23.021667小时
//        String path="I:\\尚硅谷新视频\\尚硅谷2020谷粒商城项目(重新校对版)\\分布式高级篇";//66.1415小时
//        String path="I:\\尚硅谷新视频\\尚硅谷2020谷粒商城项目(重新校对版)\\高可用集群篇";//15.487834小时
		getAllFile(path);
		String minuteOfVedio = transforMinute(totalTime);
		float hourOfVedio = Float.parseFloat(minuteOfVedio) / 60;
		System.out.println("文件夹中视频总时长为" + minuteOfVedio + "分钟");
		System.out.println("文件夹中视频总时长为" + hourOfVedio + "小时");
	}

	// 得到所有的文件
	public static void getAllFile(String path) {
		File root = new File(path);
		File[] files = root.listFiles();
		for (File file : files) {
			// 如果是文件夹,则递归往下走
			if (file.isDirectory()) {
				getAllFile(file.getAbsolutePath());
				filelist.add(file.getAbsolutePath());
			} else {
				// 截取文件的后缀名
				String fileName = file.getName().trim();
				String type = fileName.substring(fileName.lastIndexOf("."));
				// 常见的后缀名有:avi、mov、rmvb、rm、flv、mp4、3gp等
				if (type.equals(".avi") || type.equals(".mov") || type.equals(".rmvb") || type.equals(".rm") ||
						type.equals(".flv") || type.equals(".mp4") || type.equals(".3gp")) {
					MultimediaInfo multimediaInfo = null;
					Encoder encoder = new Encoder();
					try {
						multimediaInfo = encoder.getInfo(file);
					} catch (EncoderException e) {
						System.err.println("转换格式有异常:" + e.getMessage());
						e.printStackTrace();
					}
					long duration = multimediaInfo.getDuration();
					totalTime += duration;
				} else {
					System.out.println(fileName + "不是视频文件");
				}
			}
		}
	}

	// 转换时间
	public static String transforMinute(long totalTime) {
		String timeString;
		if ((totalTime / 60000) < 10) {
			timeString = "0" + totalTime / 60000 + "." + ((totalTime / 1000) - ((totalTime / 60000) * 60));

		} else if ((totalTime / 60000) < 10 && ((totalTime / 1000) - ((totalTime / 60000) * 60)) < 10) {
			timeString = "0" + totalTime / 60000 + "." + "0" + ((totalTime / 1000) - ((totalTime / 60000) * 60));

		} else if ((totalTime / 60000) > 9 && ((totalTime / 1000) - ((totalTime / 60000) * 60)) < 10) {
			timeString = totalTime / 60000 + "." + "0" + ((totalTime / 1000) - ((totalTime / 60000) * 60));

		} else {
			timeString = +totalTime / 60000 + "." + ((totalTime / 1000) - ((totalTime / 60000) * 60));
		}
		return timeString;
	}
}

这个功能是统计文件夹下视频的总时长,这是个比较实用的功能。 1、fileList放的是文件的集合。筛选出文件夹下面的所有视频文件,totalTime是总时间。 2、getAllFile(path);得到path路径下的所有视频文件。transforMinute转换时间,对视频里面的时间进行转换,minuteOfVedio 单位是分钟,hourOfVedio 单位是小时。 3、getAllFile以递归的形式,对文件夹的所有文件进行过滤,拿到所有文件名,进行截取文件的后缀名,常见的后缀名有:avi、mov、rmvb、rm、flv、mp4、3gp等,判断这些常见的视频格式就已经可以了,其他比较罕见稀有的视频格式,可以不用判断了,当然你要加的话也是可以的。 4、MultimediaInfo 进行转换格式,如果encoder转换格式有异常,直接抛出异常,给出具体信息。 5、拿到视频信息,叠加视频时长totalTime += duration。 6、如果没有进入判断条件里面,那么就是直接走入最后,给出提示,不是视频文件。 7、transforMinute转换时长,进行时分秒的计算和转换