Java学习
Rss在java类中的解析过程:
package rss.parse;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import com.sun.cnpi.rss.elements.Channel;
import com.sun.cnpi.rss.elements.Item;
import com.sun.cnpi.rss.elements.Rss;
import com.sun.cnpi.rss.parser.RssParser;
import com.sun.cnpi.rss.parser.RssParserException;
import com.sun.cnpi.rss.parser.RssParserFactory;
public class RssTest {
public static void main(String[] args){
try {
RssParser parser = RssParserFactory.createDefault();
URL url = new URL("http://www.zhuoda.org/lunzi.rss");
Rss rss = parser.parse(url);
Channel channerl = rss.getChannel();
System.out.println(channerl.getLink());
System.out.println(channerl.getItems().size());
System.out.println(channerl.getDescription());
Iterator it = channerl.getItems().iterator();
while(it.hasNext()){
Item item = (Item) it.next();
System.out.println("title:"+item.getTitle());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RssParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
1、要解析的reg.txt
<!--{&&nclude}-->
<!--/*成功故事1 start--><a href="#">想创业吗?5月最热创业点子</a><!--成功故事1 end*/-->
<!--/*成功故事1 start-->
<a href="#">想创业吗?5月最热创业点子</a>
<!--成功故事1 end*/-->
test
2、TestMain.java测试的java解析类
package org.openxtiger.regular.test;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class TestMain {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("e:/reg.txt"));
String temp = "";
StringBuffer sb = new StringBuffer();
while((temp=br.readLine())!=null){
sb.append(temp+"\r\n");
}
br.close();
System.out.println(sb.toString());
String str = sb.toString();
str = str.replaceAll("<!--\\{(.+?)\\}(.*?)-->", "<?php include(\"$1\") ?>");
str = str.replaceAll("<!--/\\*([\\s\\S]+?)\\*/-->","");
System.out.println("str="+str);
}
}
3、参考资料
package org.openxtiger.threads.test;
public class ShareData implements Runnable {
private int i;
public void run() {
/*synchronized(ShareData.class){
while (i<10) {
i++;
System.out.println(Thread.currentThread().getName()+":"+i);
}
}*/
while (i<10) {
System.out.println("first="+Thread.currentThread().getName()+":"+i);
synchronized(ShareData.class){
//System.out.println(i);
i++;
//System.out.println(i);
for(int j=0;j<10000;j++);
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
}
public static void main(String[] args) {
ShareData s1 = new ShareData();
Thread t1 = new Thread(s1);
Thread t2 = new Thread(s1);
t1.start();
t2.start();
}
}
这个线程是有问题的,猛一看没什么,多运行几次就会发现有i=11的数值输出,和while条件是i<10是想矛盾,刚开始我是百思不得其解,后来根据haohao提供的资料才搞明白,原来是synchronized保护块的问题,改成我上面被注释的那个synchronized包含块就可以了。
参考资料
import java.util.ArrayList;
import java.util.List;
public class GeneratePswd {
@SuppressWarnings({ "unchecked", "unchecked" })
public static void main(String[] args) {
StringBuffer buf = new StringBuffer("a,b,c,d,e,f,g,h,i,g,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z");
buf.append(",A,B,C,D,E,F,G,H,I,G,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z");
buf.append(",~,@,#,$,%,^,&,*,(,),_,+,|,`,.");
buf.append(",1,2,3,4,5,6,7,8,9,0");
String[] arr = buf.toString().split(",");
List pswdList = new ArrayList();
for(int i=0;i<50;i++){
pswdList.add(getPswd(arr));
}
for(int i=0;i<pswdList.size();i++){
System.out.println(pswdList.get(i));
}
}
public static String getPswd(String[] arr){
StringBuffer b = new StringBuffer();
java.util.Random r;
int k ;
for(int i=0;i<15;i++){
r = new java.util.Random();
k = r.nextInt();
b.append(String.valueOf(arr[Math.abs(k % 76)]));
}
return b.toString();
}
}
参考资料
package calendar;
import java.util.Scanner;
public class PrintCalendar
{
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("******************欢 迎 使 用 万 年 历******************");
Scanner input = new Scanner(System.in);
System.out.print("请选择年份: ");
int year = input.nextInt();
System.out.print("请选择月份: ");
int month = input.nextInt();
System.out.println();
int days = 0; // 存储当月的天数
boolean isRn;
/* 判断是否是闰年 */
if (year % 4 == 0 && !(year % 100 == 0) || year % 400 == 0) { // 判断是否为闰年
isRn = true; // 闰年
} else {
isRn = false;// 平年
}
/* 计算输入的年份之前的天数 */
int totalDays = 0;
for (int i = 1900; i < year; i++) {
/* 判断闰年或平年,并进行天数累加 */
if (i % 4 == 0 && !(i % 100 == 0) || i % 400 == 0) { // 判断是否为闰年
totalDays = totalDays + 366; // 闰年366天
} else {
totalDays = totalDays + 365; // 平年365天
}
}
/* 计算输入月份之前的天数 */
int beforeDays = 0;
for (int i = 1; i <= month; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 2:
if (isRn) {
days = 29;
} else {
days = 28;
}
break;
default:
days = 30;
break;
}
if (i < month) {
beforeDays = beforeDays + days;
}
}
totalDays = totalDays + beforeDays; // 距离1900年1月1日的天数
/* 计算星期几 */
int firstDayOfMonth; // 存储当月第一天是星期几:星期日为0,星期一~星期六为1~6
int temp = 1 + totalDays % 7; // 从1900年1月1日推算
if (temp == 7) { // 求当月第一天
firstDayOfMonth = 0; // 周日
} else {
firstDayOfMonth = temp;
}
/* 输出日历 */
System.out.println("星期日 星期一 星期二 星期三 星期四 星期五 星期六");
for (int nullNo = 0; nullNo < firstDayOfMonth; nullNo++) {
System.out.print(" "); // 输出空格
}
for (int i = 1; i <= days; i++) {
System.out.print(i + " ");
if ((totalDays + i - 1) % 7 == 5) { // 如果当天为周六,输出换行
System.out.println();
}
}
}
}
package com.cn;
import java.awt.Color;
import java.awt.Font;
import java.awt.RenderingHints;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpSession;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
public class BarChartDemo {
/**
* 饼状图
*/
public static String generatePieChart(HttpSession session, PrintWriter pw,
int w, int h) {
String filename = null;
PieDataset dataset = getDataSet();
JFreeChart chart = ChartFactory.createPieChart3D("水果产量图", // 图表标题
dataset, // 数据集
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
chart.setBackgroundPaint(Color.pink);
try {
/*------得到chart的保存路径----*/
ChartRenderingInfo info = new ChartRenderingInfo(
new StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,
session);
/*------使用printWriter将文件写出----*/
ChartUtilities.writeImageMap(pw, filename, info, true);
pw.flush();
} catch (IOException e) {
e.printStackTrace();
}
return filename;
}
/**
* 柱状图
*/
public static String generateBarChart(HttpSession session, PrintWriter pw,
int w, int h) {
String filename = null;
CategoryDataset dataset = getDataSet2();
JFreeChart chart = ChartFactory.createBarChart3D("水果产量图", // 图表标题
"水果", // 目录轴的显示标签
"产量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否?允就祭?(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
try {
/*------得到chart的保存路径----*/
ChartRenderingInfo info = new ChartRenderingInfo(
new StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,
session);
/*------使用printWriter将文件写出----*/
ChartUtilities.writeImageMap(pw, filename, info, true);
pw.flush();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return filename;
}
/**
* 折线图
*/
public static String generateLineChart(HttpSession session, PrintWriter pw,
int w, int h) {
String filename = null;
CategoryDataset dataset = getDataSet3();
JFreeChart chart = ChartFactory.createLineChart("水果产量图", // 图表标题
"水果", // 目录轴的显示标签
"产量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
/*----------设置消除字体的锯齿渲染(解决中文问题)--------------*/
chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
/*------------配置图表属性--------------*/
// 1,设置整个图表背景颜色
chart.setBackgroundPaint(Color.pink);
/*------------设定Plot参数-------------*/
Font ft = new Font("SimSun", 10, 10);
TextTitle txtTitle = chart.getTitle();
txtTitle.setFont(ft);
CategoryPlot plot = chart.getCategoryPlot();
// 2,设置详细图表的显示细节部分的背景颜色
// plot.setBackgroundPaint(Color.PINK);
// 3,设置垂直网格线颜色
plot.setDomainGridlinePaint(Color.black);
// 4,设置是否显示垂直网格线
plot.setDomainGridlinesVisible(true);
// 5,设置水平网格线颜色
plot.setRangeGridlinePaint(Color.blue);
// 6,设置是否显示水平网格线
plot.setRangeGridlinesVisible(true);
try {
/*------得到chart的保存路径----*/
ChartRenderingInfo info = new ChartRenderingInfo(
new StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,
session);
/*------使用printWriter将文件写出----*/
ChartUtilities.writeImageMap(pw, filename, info, true);
pw.flush();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return filename;
}
/**
* 在本地生成图片文件
*/
public static void ganarateFruitChart() {
CategoryDataset dataset = getDataSet2();
JFreeChart chart = ChartFactory.createBarChart3D("水果产量图", // 图表标题
"月份1", // 目录轴的显示标签
"产量(公斤)1", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对?诩虻サ闹赐急匦胧莊alse)
false, // 是否生成工具
false // 是否生成URL链接
);
Font ft = new Font("SimSun", 10, 10);
TextTitle txtTitle = chart.getTitle();
txtTitle.setFont(ft);
//chart.setTitle(new TextTitle("修正字体", new Font("黑体", Font.BOLD, 20)));
FileOutputStream fos_jpg = null;
try {
fos_jpg = new FileOutputStream("D:\\fruit.jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg, 1.0f, chart, 800, 600,
null);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fos_jpg.close();
} catch (Exception e) {
}
}
}
/**
* 获取一个饼状图的简单数据集对象
*
* @return
*/
private static PieDataset getDataSet() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("苹果", 100);
dataset.setValue("梨子", 200);
dataset.setValue("葡萄", 300);
dataset.setValue("香蕉", 400);
dataset.setValue("荔枝", 500);
return dataset;
}
/**
* 获取一个柱状图数据集对象
*
* @return
*/
private static CategoryDataset getDataSet2() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京1", "苹果");
dataset.addValue(500, "北京2", "荔枝");
dataset.addValue(400, "北京", "香蕉");
dataset.addValue(200, "北京", "梨子");
dataset.addValue(300, "北京", "葡萄");
dataset.addValue(500, "上海", "葡萄");
dataset.addValue(600, "上海", "梨子");
dataset.addValue(400, "上海", "香蕉");
dataset.addValue(700, "上海", "苹果");
dataset.addValue(300, "上海", "荔枝");
dataset.addValue(300, "广州", "苹果");
dataset.addValue(200, "广州", "梨子");
dataset.addValue(500, "广州", "香蕉");
dataset.addValue(400, "广州", "葡萄");
dataset.addValue(700, "广州8", "荔枝");
return dataset;
}
/**
* 获取一个折线图数据集对象
*
* @return
*/
private static CategoryDataset getDataSet3() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "一月");
dataset.addValue(200, "北京", "二月");
dataset.addValue(100, "北京", "三月");
dataset.addValue(400, "北京", "四月");
dataset.addValue(300, "北京", "五月");
dataset.addValue(500, "北京", "六月");
dataset.addValue(90, "北京", "七月");
dataset.addValue(700, "北京", "八月");
dataset.addValue(800, "北京", "九月");
dataset.addValue(1000, "北京", "十月");
dataset.addValue(300, "北京", "十一月");
dataset.addValue(700, "北京", "十二月");
dataset.addValue(1200, "上海", "一月");
dataset.addValue(1100, "上海", "二月");
dataset.addValue(1000, "上海", "三月");
dataset.addValue(900, "上海", "四月");
dataset.addValue(800, "上海", "五月");
dataset.addValue(700, "上海", "六月");
dataset.addValue(600, "上海", "七月");
dataset.addValue(500, "上海", "八月");
dataset.addValue(400, "上海", "九月");
dataset.addValue(300, "上海", "十月");
dataset.addValue(200, "上海", "十一月");
dataset.addValue(100, "上海", "十二月");
dataset.addValue(600, "武汉", "一月");
dataset.addValue(500, "武汉", "二月");
dataset.addValue(400, "武汉", "三月");
dataset.addValue(300, "武汉", "四月");
dataset.addValue(200, "武汉", "五月");
dataset.addValue(100, "武汉", "六月");
dataset.addValue(200, "武??", "七月");
dataset.addValue(300, "武汉", "八月");
dataset.addValue(400, "武汉", "九月");
dataset.addValue(500, "武汉", "十月");
dataset.addValue(600, "武汉", "十一月");
dataset.addValue(700, "武汉", "十二月");
return dataset;
}
/**
* @param args
*/
public static void main(String[] args) {
ganarateFruitChart();
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>
org.jfree.chart.servlet.DisplayChart
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/servlet/DisplayChart</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.io.PrintWriter"%>
<jsp:directive.page import="com.cn.BarChartDemo"/>
<html>
<head>
<title>
</title>
<%
//饼状图
String fileNamePie=BarChartDemo.generatePieChart(session,new PrintWriter(out),580,250);
String graphURLPie = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileNamePie;
//饼状图
String fileNameBar=BarChartDemo.generateBarChart(session,new PrintWriter(out),580,250);
String graphURLBar = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileNameBar;
//折线图
String fileNameLine=BarChartDemo.generateLineChart(session,new PrintWriter(out),580,250);
String graphURLLine = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileNameLine;
%>
</head>
<body bgcolor="#ffffff">
<table align="center" width="580" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<img src=" <%= graphURLPie %>"width=580 height=250 border=0 >
</td>
</tr>
<tr>
<td>
<img src=" <%= graphURLBar %>"width=580 height=250 border=0 >
</td>
</tr>
<tr>
<td>
<img src=" <%= graphURLLine %>"width=580 height=250 border=0 >
</td>
</tr>
</table>
</body>
</html>
其他例子
package cn.com.aweb.vote.test.conndbUtil;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestCunChu2 {
/**
* @param args
*/
public static void main(String[] args) throws SQLException{
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String url = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test;user=test;password=123456";
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//1295
con = DriverManager.getConnection(url);
//exec Pagination 1,2,'admin','*','id asc','',@maxPage,@totalRow,@descript
CallableStatement cstmt = con.prepareCall("{call dbo.Pagination(?,?,?,?,?,?,?,?,?)}");
cstmt.setInt(1, 1);
cstmt.setInt(2, 3);
cstmt.setString(3, "admin");
cstmt.setString(4, "*");
cstmt.setString(5, "id asc");
cstmt.setString(6, "");
cstmt.registerOutParameter(7, java.sql.Types.INTEGER);
cstmt.registerOutParameter(8, java.sql.Types.INTEGER);
cstmt.registerOutParameter(9, java.sql.Types.VARCHAR);
cstmt.execute();
System.out.println("maxPage: " + cstmt.getInt(7));
System.out.println("@TotalRow: " + cstmt.getInt(8));
System.out.println("@Descript: " + cstmt.getString(9));
rs = cstmt.executeQuery();
int i = 0;
while(rs.next()){
i++;
System.out.println(rs.getString("admin_name"));
}
System.out.println("i="+i);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (con != null) {
con.close();
}
if (stmt != null) {
stmt.close();
}
if (rs != null) {
rs.close();
}
}
}
}
}
public class TestString {
public static void main(String[] args) {
/**
* Java运行环境有一个字符串池,由String类维护。
* 执行语句String str="abc"时,首先查看字符串池中是否存在字符串"abc",
* 假如存在则直接将"abc"赋给str,
* 假如不存在则先在字符串池中新建一个字符串"abc",然后再将其赋给str。
* 执行语句String str=new String("abc")时,
* 不管字符串池中是否存在字符串"abc",
* 直接新建一个字符串"abc"(注意:新建的字符串"abc"不是在字符串池中),然后将其付给str。
* 前一语句的效率高,后一语句的效率低,因为新建字符串占用内存空间。
* String str = new String()创建了一个空字符串,和String str=new String("")相同
* intern()method返回字符串对象的规范化表示形式
*/
String a = new String();
String aa = "";
String aaa = new String("");
String b = new String("asdf");
String c = new String("asdf");
String d = "asdf";
System.out.println(a == aa);//false
System.out.println(a == aaa);//false
System.out.println(a.intern() == aa.intern());
System.out.println(a.intern() == aaa.intern());
System.out.println(d == "asdf");
System.out.println(b == c);//false
System.out.println(b == d);//false
System.out.println(b.equals(c));//true
System.out.println(b.equals(d));//true
b = b.intern();
System.out.println(b == c);//false
System.out.println(b == d);//true
c = c.intern();
System.out.println(b == c);//true
//abc 栈
String str1 = new String("abc");
String str2 = new String("abc");
String s1 = "abc" ;
String s2 = "abc" ;
if( s1 == s2 )
System.out.println("s1,s2 refer to the same object");
else
System.out.println("trouble");
String str = new String("jf"); // jf是接分
str = 1+2+str+3+4;
System.out.println(str);
}
}
import java.io.File;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
public class TestVedio {
public static boolean process(String resourcePath) {
int type = checkContentType(resourcePath);
boolean status = false;
if (type == 0) {
status = processFLV(resourcePath);// 直接将文件转为flv文件
}
return status;
}
private static int checkContentType(String resourcePath) {
String type = resourcePath.substring(resourcePath.lastIndexOf(".") + 1,
resourcePath.length()).toLowerCase();
// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
if (type.equals("avi")) {
return 0;
} else if (type.equals("mpg")) {
return 0;
} else if (type.equals("wmv")) {
return 0;
} else if (type.equals("3gp")) {
return 0;
} else if (type.equals("mov")) {
return 0;
} else if (type.equals("mp4")) {
return 0;
} else if (type.equals("asf")) {
return 0;
} else if (type.equals("asx")) {
return 0;
} else if (type.equals("flv")) {
return 0;
} else if (type.equals("mpeg")) {
return 0;
} else if (type.equals("mpe")) {
return 0;
}
// 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等),
// 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式.
else if (type.equals("wmv9")) {
return 1;
} else if (type.equals("rm")) {
return 1;
} else if (type.equals("rmvb")) {
return 1;
}
return 9;
}
private static boolean checkfile(String path) {
File file = new File(path);
if (!file.isFile()) {
return false;
}
return true;
}
// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
private static boolean processFLV(String resourcePath) {
if (!checkfile(resourcePath)) {
System.out.println(resourcePath + " is not file");
return false;
}
// 文件命名
Calendar c = Calendar.getInstance();
String savename = String.valueOf(c.getTimeInMillis())+ Math.round(Math.random() * 100000);
List commend = new ArrayList();
commend.add("e:\\ffmpeg");
commend.add("-i");
commend.add(resourcePath);
commend.add("-ab");
commend.add("56");
commend.add("-ar");
commend.add("22050");
commend.add("-qscale");
commend.add("8");
commend.add("-r");
commend.add("15");
commend.add("-s");
commend.add("600x500");
commend.add("e:\\" + savename + ".flv");
try {
Runtime runtime = Runtime.getRuntime();
Process proce = null;
String cmd = "";
String cut = " e://ffmpeg.exe -i "
+ resourcePath
+ " -y -f image2 -ss 8 -t 0.001 -s 600x500 e:\\"
+ savename + ".jpg";
String cutCmd = cmd + cut;
proce = runtime.exec(cutCmd);
ProcessBuilder builder = new ProcessBuilder(commend);
// builder.command(commend);
builder.start();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public static void main(String[] args) {
if (!checkfile("e:\\hibernate1.avi")) {
System.out.println("" + " is not file");
return;
}
if (process("e:\\hibernate1.avi")) {
System.out.println("ok");
}
}
}
import java.io.IOException;
public class TestMain {
/**
* @param args
*/
public static void main(String[] args) {
String videoRealPath = "e:\\video.flv";
String imageRealPath = "e:\\video.jpg";
String videoPath = "e:\\videotes.flv";
try {
Runtime.getRuntime().exec("cmd /c start e:\\ffmpeg.bat " + videoRealPath + ","+ imageRealPath+","+ videoPath);
} catch (IOException e) {
e.printStackTrace();
}
}
}
ffmpeg.bat文件内容:
ffmpeg.exe -i %1 -ss 3 -vframes 1 -r 1 -ac 1 -ab 2 -s 160*120 -f image2 %2
ffmpeg站点
参考资料
视频网站搭建
ffmpeg截图
