当前位置:  编程技术>移动开发
本页文章导读:
    ▪java 接收、解析邮件范例(三)        java 接收、解析邮件实例(三) package com.prase.email.four; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputS.........
    ▪ 不重启服务器的情况上,修改定时执行任务的执行时间        不重启服务器的情况下,修改定时执行任务的执行时间 import java.text.SimpleDateFormat;import java.util.Timer;import java.util.TimerTask; public class MutilTimer { //定时器 private static Timer timer = new Timer();  private .........
    ▪ NDK学习 mp3解码器等有关       NDK学习 mp3解码器等相关 C写文件   [cpp] view plaincopyprint? #include<stdio.h>       main(){       // java        // File file = new File("1.txt")        // 打开一个文件的c语言的函.........

[1]java 接收、解析邮件范例(三)
    来源: 互联网  发布时间: 2014-02-18
java 接收、解析邮件实例(三)
package com.prase.email.four;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

import javax.mail.BodyPart;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;

import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;

public class PraseMimeMessage{
	
 private MimeMessage mimeMessage=null;
 private String saveAttachPath="";//附件下载后的存放目录
 private  StringBuffer bodytext=new StringBuffer();
 //存放邮件内容的StringBuffer对象
 private String dateformat="yy-MM-dd HH:mm";//默认的日前显示格式
  /**
  * 构造函数,初始化一个MimeMessage对象
  */
 public PraseMimeMessage() {
 }
 public PraseMimeMessage(MimeMessage mimeMessage) {
  this.mimeMessage=mimeMessage;
 }
 public void setMimeMessage(MimeMessage mimeMessage){
  this.mimeMessage=mimeMessage; 
 }
 /**
  * 获得发件人的地址和姓名
  */
 public String getFrom1()throws Exception{
  InternetAddress address[]=(InternetAddress[])mimeMessage.getFrom();
  String from=address[0].getAddress();
  if(from==null){
   from="";
  }
  String personal=address[0].getPersonal();
  if(personal==null){
   personal="";
  }
  String fromaddr=personal+"<"+from+">";
  return fromaddr;
 }
 /**
  * 获得邮件的收件人,抄送,和密送的地址和姓名,根据所传递的参数的不同
  * "to"----收件人 "cc"---抄送人地址 "bcc"---密送人地址  
  * @throws Exception */
 public String getMailAddress(String type){
  String mailaddr="";
  try {  
   String addtype=type.toUpperCase();
   InternetAddress []address=null;
   if(addtype.equals("TO")||addtype.equals("CC")||addtype.equals("BBC")){
    if(addtype.equals("TO")){
     address=(InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.TO);
    }
    else if(addtype.equals("CC")){
     address=(InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.CC);
    }
    else{
     address=(InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.BCC);
    }
    if(address!=null){
     for (int i = 0; i < address.length; i++) {
      String email=address[i].getAddress();
      if(email==null)email="";
      else{
       email=MimeUtility.decodeText(email);
      }
      String personal=address[i].getPersonal();
      if(personal==null)personal="";
      else{
       personal=MimeUtility.decodeText(personal);
      }
      String compositeto=personal+"<"+email+">";
      mailaddr+=","+compositeto;
     }
     mailaddr=mailaddr.substring(1);
    }
   }
   else{
   }
  } catch (Exception e) {
   // TODO: handle exception
  } 
  return mailaddr;
 }
 /**
   * 获得邮件主题   
  */
 public String getSubject()
 {
  String subject="";
  try {
   subject=MimeUtility.decodeText(mimeMessage.getSubject());
   if(subject==null)subject="";
  } catch (Exception e) {
   // TODO: handle exception
  }
  return subject;
 }
 /**
   * 获得邮件发送日期
   */
 public String getSendDate()throws Exception{
  Date senddate=mimeMessage.getSentDate();
  SimpleDateFormat format=new SimpleDateFormat(dateformat);
  return format.format(senddate);
 }
 /**
   * 解析邮件,把得到的邮件内容保存到一个StringBuffer对象中,解析邮件
   * 主要是根据MimeType类型的不同执行不同的操作,一步一步的解析
   */
 public void getMailContent(Part part)throws Exception{
  String contenttype=part.getContentType();
  int nameindex=contenttype.indexOf("name");
  boolean conname=false;
  if(nameindex!=-1)conname=true;
  if(part.isMimeType("text/plain")&&!conname){
   bodytext.append((String)part.getContent());  
  }else if(part.isMimeType("text/html")&&!conname){
   bodytext.append((String)part.getContent());  
  }
  else if(part.isMimeType("multipart/*")){
   Multipart multipart=(Multipart)part.getContent();
   int counts=multipart.getCount();
   for(int i=0;i<counts;i++){
    getMailContent(multipart.getBodyPart(i));
   }
  }else if(part.isMimeType("message/rfc822")){
   getMailContent((Part)part.getContent());
  }
  else{}
 }
 /**
  * 获得邮件正文内容
   */
 public String getBodyText(){ 
  return bodytext.toString();
 }
 /**
   * 判断此邮件是否需要回执,如果需要回执返回"true",否则返回"false"
   
  * @throws MessagingException */
 public boolean getReplySign() throws MessagingException{
  boolean replysign=false;
  String needreply[]=mimeMessage.getHeader("Disposition-Notification-To");
  if(needreply!=null){
   replysign=true;
  }
  return replysign;
 }
 /**
  * 获得此邮件的Message-ID   
  * @throws MessagingException */
 public String getMessageId() throws MessagingException{
  return mimeMessage.getMessageID();
 }
 
 /**
  * 【判断此邮件是否已读,如果未读返回返回false,反之返回true】   
  * @throws MessagingException */
 public boolean isNew() throws MessagingException{
  boolean isnew =false;
  Flags flags=((Message)mimeMessage).getFlags();
  Flags.Flag[]flag=flags.getSystemFlags();
  for (int i = 0; i < flag.length; i++) {
   if(flag[i]==Flags.Flag.SEEN){
    isnew=true;
    break;
   }
  }
  return isnew;
 }
 /**
  * 判断此邮件是否包含附件  
  * @throws MessagingException */
 public boolean isContainAttach(Part part) throws Exception{
  boolean attachflag=false;
  String contentType=part.getContentType();
  if(part.isMimeType("multipart/*")){
   Multipart mp=(Multipart)part.getContent();
   //获取附件名称可能包含多个附件
   for(int j=0;j<mp.getCount();j++){
    BodyPart mpart=mp.getBodyPart(j);
    String disposition=mpart.getDescription();
    if((disposition!=null)&&((disposition.equals(Part.ATTACHMENT))||(disposition.equals(Part.INLINE)))){
     attachflag=true;
    }else if(mpart.isMimeType("multipart/*")){
     attachflag=isContainAttach((Part)mpart);
    }else{
     String contype=mpart.getContentType();
     if(contype.toLowerCase().indexOf("application")!=-1) attachflag=true;
     if(contype.toLowerCase().indexOf("name")!=-1) attachflag=true;
    }
   }
  }else if(part.isMimeType("message/rfc822")){
   attachflag=isContainAttach((Part)part.getContent());
  }
  return attachflag;
 }
 /**
  * 【保存附件】  
  * @throws Exception
  * @throws IOException
  * @throws MessagingException
  * @throws Exception */
 public void saveAttachMent(Part part) throws Exception {
  String fileName="";
  if(part.isMimeType("multipart/*")){
   Multipart mp=(Multipart)part.getContent();
   for(int j=0;j<mp.getCount();j++){
    BodyPart mpart=mp.getBodyPart(j);
    String disposition=mpart.getDescription();
    if((disposition!=null)&&((disposition.equals(Part.ATTACHMENT))||(disposition.equals(Part.INLINE)))){
     fileName=mpart.getFileName();
     if(fileName.toLowerCase().indexOf("GBK")!=-1){
      fileName=MimeUtility.decodeText(fileName);
     }
     saveFile(fileName,mpart.getInputStream());
    }
    else if(mpart.isMimeType("multipart/*")){
     fileName=mpart.getFileName();   
    }
    else{
     fileName=mpart.getFileName();
     if((fileName!=null)){
      fileName=MimeUtility.decodeText(fileName);
      saveFile(fileName,mpart.getInputStream());
     }
    }
   }
  }
  else if(part.isMimeType("message/rfc822")){
   saveAttachMent((Part)part.getContent());
  }
 }
 /**
  * 【设置附件存放路径】
  */
 public void setAttachPath(String attachpath){
  this.saveAttachPath=attachpath;
 }
 
 /**
  * 【设置日期显示格式】
  */
 public void setDateFormat(String format){
  this.dateformat=format;
 }

 /**
  * 【获得附件存放路径】
  */
 
 public String getAttachPath()
 {
  return saveAttachPath;
 }
 /**
  * 【真正的保存附件到指定目录里】
  */
 private void saveFile(String fileName,InputStream in)throws Exception{
  String osName=System.getProperty("os.name");
  String storedir=getAttachPath();
  String separator="";
  if(osName==null)osName="";
  if(osName.toLowerCase().indexOf("win")!=-1){
   //如果是window 操作系统
   separator="/";
   if(storedir==null||storedir.equals(""))storedir="c:\tmp";
  }
  else{
   //如果是其他的系统
   separator="/";
   storedir="/tmp";
  }
  File strorefile=new File(storedir+separator+fileName);
  BufferedOutputStream bos=null;
  BufferedInputStream bis=null;
  try {
   bos=new BufferedOutputStream(new FileOutputStream(strorefile));
   bis=new BufferedInputStream(in);
   int c;
   while((c=bis.read())!=-1){
    bos.write(c);
    bos.flush();
   }
  } catch (Exception e) {
   // TODO: handle exception
  }finally{
   bos.close();
   bis.close();
  }
 }
 /**
  * PraseMimeMessage类测试
  
  * @throws Exception */
 public static void main(String[] args) throws Exception {
//  String host="mail.21gmail.com";
//  String username="fjj0@21gmail.com";
//  String password="123456789";
  
  Properties props=new Properties();
  
//使用网络代理
  props.setProperty("proxySet","true");
  props.setProperty("ProxyHost","10.24.5.105");
  props.setProperty("ProxyPort","39002"); 
  
  Session session=Session.getDefaultInstance(props,null);
  Store store=session.getStore("pop3");
  store.connect(host,username,password);
  Folder folder=store.getFolder("INBOX");
  folder.open(Folder.READ_ONLY);
  Message message[]=folder.getMessages();
  PraseMimeMessage pmm=null;
  for (int i = 0; i < message.length; i++) {
   System.out.println("****************************************第"+(i+1)+"封邮件**********************************");
   pmm=new PraseMimeMessage((MimeMessage)message[i]);
   System.out.println("主题 :"+pmm.getSubject());
   pmm.setDateFormat("yy年MM月dd日 HH:mm");
   System.out.println("发送时间 :"+pmm.getSendDate());
   System.out.println("是否回执 :"+pmm.getReplySign());
   System.out.println("是否包含附件 :"+pmm.isContainAttach((Part)message[i]));
   System.out.println("发件人 :"+pmm.getFrom1());
   System.out.println("收件人 :"+pmm.getMailAddress("TO"));
   System.out.println("抄送地址 :"+pmm.getMailAddress("CC"));
   System.out.println("密送地址 :"+pmm.getMailAddress("BCC"));    
   System.out.println("邮件ID :"+i+":"+pmm.getMessageId());
   pmm.getMailContent((Part)message[i]);  //根据内容的不同解析邮件
   pmm.setAttachPath("d:/temp");  //设置邮件附件的保存路径
   pmm.saveAttachMent((Part)message[i]); //保存附件
   System.out.println("邮件正文 :"+pmm.getBodyText());
   System.out.println("*********************************第"+(i+1)+"封邮件结束*************************************");
  }
 }
}

    
[2] 不重启服务器的情况上,修改定时执行任务的执行时间
    来源: 互联网  发布时间: 2014-02-18
不重启服务器的情况下,修改定时执行任务的执行时间

import java.text.SimpleDateFormat;
import java.util.Timer;
import java.util.TimerTask;


public class MutilTimer
{
 //定时器
 private static Timer timer = new Timer();
 
 private static final long confirmTime = 5*1000;
 
 //类变量
 private static MutilTimer multilTimer = new MutilTimer();
 
 private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 public static void main(String[] args)
 {
  multilTimer.init();
 }
 
 private static long wait = 3000l;
 private void init()
 {
  long repeatedWait = wait + confirmTime;
  
  timer.schedule(new TimerTask() {
   @Override
   public void run() {
    exec();
   }
  },wait);
  
  timer.schedule(new TimerTask() {
   @Override
   public void run() {
    wait += 1000l;
    init();
   }
  },repeatedWait);
 }
 
 private void exec()
 {
  System.out.println("hello, runTime is " + sdf.format(System.currentTimeMillis()));
 }
 
}


    
[3] NDK学习 mp3解码器等有关
    来源: 互联网  发布时间: 2014-02-18
NDK学习 mp3解码器等相关

C写文件

 

[cpp] view plaincopyprint?
  • #include<stdio.h>  
  •   
  •  main(){  
  •     // java   
  •     // File file = new File("1.txt")   
  •     // 打开一个文件的c语言的函数   
  •     // sharedpreference  db content.openoutput()    
  •     // 获取到文件的指针    
  •     FILE* fp = fopen("1.txt","wt");  
  •       
  •     char* str ="haha wirte file";  
  •       
  •     // fwrite方法接受4个参数    
  •     // 第一个参数 写什么内容   
  •     // 第二个参数 是一次 数据写多长    
  •     // 第三个参数 是写多少次   
  •     // 第四个参数 写到哪个文件里面    
  •     int len = fwrite(str,sizeof(char),15,fp);  
  •       
  •     printf("len =%d\n",len);  
  •       
  •     //释放文件句柄   
  •     fclose(fp);   
  •       
  •     system("pause");     
  • }  

  • c读文件

     

     

    [cpp] view plaincopyprint?
  • #include<stdio.h>  
  •   
  •  main(){  
  •            FILE* fp = fopen("1.txt","rt");      
  •           
  •            char arr[20]={};  
  •              
  •              
  •            //第一个参数 是读出来内容放在哪里  
  •             // 第二个 参数 一次读的数据的长度    
  •             // 第三个参数 读多少次   
  •             // 第四个参数 从哪个文件里面读   
  •             int read = fread(arr,sizeof(char),15,fp);  
  •           
  •             printf("arr = %s\n",arr);  
  •           
  •             printf("读了%d个char类型\n",read);   
  •           
  •             fclose(fp);//必须加入 否则会造成一直在占用这个文件  
  •             system("pause");     
  • }  

  • 编写编码器应用的流程

     

    1.明确需求

    2.研究技术实现 如果没有做过 需要进行一定时间的调研,如果还不能ok 只能想办法绕过这个知识点实现需求

    3.实施:

        -1 研究c源码解码器的工作过程,找到核心代码 找到入口等

        -2将核心代码放入jni然后编译 注意头文件的引入

        -3测试

    注意android需要在

    LOCAL_SRC_FILES 描述中把所有的c文件都知名 可以做个 程序获取

     

    这次老师代码有个不好的地方是没有吧解码器的代码进行封装 如果封装成一个方法 然后输入文件输出文件就可以了

    另外

    含有进度的进度条有两种 一种是真正计算出来的进度去 一种是估算出来的 会在99%哪里卡住.


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    软件工程/软件设计 iis7站长之家
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3