共 107篇 前 10 页: 10    每页5篇 下一页  

Java学习

sun rss2.0官方教程 [与之对应的中文教程]

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();
  }
 }
}

lunzi   2007-05-11 10:10:01 阅读:338  评论:0  引用:0

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、参考资料
lunzi   2009-09-22 01:10:49 阅读:417  评论:0  引用:0

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包含块就可以了。

参考资料
lunzi   2009-06-18 14:38:31 阅读:199  评论:0  引用:0

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();
}

}


参考资料
lunzi   2009-02-11 11:23:03 阅读:594  评论:0  引用:0

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();
   }
  }
}
}


lunzi   2009-02-10 10:01:15 阅读:155  评论:0  引用:0

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>



其他例子
lunzi   2008-12-21 20:33:27 阅读:330  评论:0  引用:0
这两天用JFreeChart做了几个测试,涉及到中文的都是方格乱码,原因是版本太新了,不稳定所致。
我用的是jfreechart-1.0.11.zip。目前的最新版本。

参考文章

lunzi   2008-12-21 04:18:31 阅读:1589  评论:0  引用:0
MS SQL Server 2005 通用分页存储过程


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();
}
}

}

}


}
lunzi   2008-12-19 15:19:57 阅读:326  评论:0  引用:0

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);

}

}

lunzi   2008-11-30 00:07:32 阅读:184  评论:1  引用:0

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截图
lunzi   2008-11-29 00:18:09 阅读:838  评论:0  引用:0
Copyright@2008 powered by YuLog