java实现变更文件查询的方法

本文实例讲述了java实现变更文件查询的方法。分享给大家供大家参考。具体如下:

自己经常发布包时需要查找那些文件时上次发包后更新的数据文件,所以写了这个发布包,
拷贝输出的命令,dos窗口下执行,
为啥不直接复制文件,因为java拷贝文件会修改文件最后修改日期,所以采用dos下的拷贝。

/*
 *
 * 更改所生成文件模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
package com.cn.wangk.tools;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
/** *//**
 * Bean to display a month calendar in a JPanel. Only works for the Western
 * calendar.
 *
 * @author Ian F. Darwin, http://www.darwinsys.com/
 * @version $Id: Cal.java,v 1.5 2004/02/09 03:33:45 ian Exp $
 */
public class Cal extends JPanel{
 /** *//** The currently-interesting year (not modulo 1900!) */
 protected int yy;
 /** *//** Currently-interesting month and day */
 protected int mm, dd;
 /** *//** The buttons to be displayed */
 protected JButton labs[][];
 /** *//** The number of day squares to leave blank at the start of this month */
 protected int leadGap = 0;
 /** *//** A Calendar object used throughout */
 Calendar calendar = new GregorianCalendar();
 /** *//** Today's year */
 protected final int thisYear = calendar.get(Calendar.YEAR);
 /** *//** Today's month */
 protected final int thisMonth = calendar.get(Calendar.MONTH);
 /** *//** One of the buttons. We just keep its reference for getBackground(). */
 private JButton b0;
 /** *//** The month choice */
 private JComboBox monthChoice;
 /** *//** The year choice */
 private JComboBox yearChoice;
 /** *//**
  * Construct a Cal, starting with today.
  */
 Cal(){
  super();
  setYYMMDD(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
    calendar.get(Calendar.DAY_OF_MONTH));
  buildGUI();
  recompute();
 }
 /** *//**
  * Construct a Cal, given the leading days and the total days
  *
  * @exception IllegalArgumentException
  *        If year out of range
  */
 Cal(int year, int month, int today){
  super();
  setYYMMDD(year, month, today);
  buildGUI();
  recompute();
 }
 private void setYYMMDD(int year, int month, int today){
  yy = year;
  mm = month;
  dd = today;
 }
 String[] months ={ "January", "February", "March", "April", "May", "June",
   "July", "August", "September", "October", "November", "December" };
 /** *//** Build the GUI. Assumes that setYYMMDD has been called. */
 private void buildGUI(){
  getAccessibleContext().setAccessibleDescription(
    "Calendar not accessible yet. Sorry!");
  setBorder(BorderFactory.createEtchedBorder());
  setLayout(new BorderLayout());
  JPanel tp = new JPanel();
  tp.add(monthChoice = new JComboBox());
  for (int i = 0; i < months.length; i++)
   monthChoice.addItem(months[i]);
  monthChoice.setSelectedItem(months[mm]);
  monthChoice.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent ae){
    int i = monthChoice.getSelectedIndex();
    if (i >= 0){
     mm = i;
     // System.out.println("Month=" + mm);
     recompute();
    }
   }
  });
  monthChoice.getAccessibleContext().setAccessibleName("Months");
  monthChoice.getAccessibleContext().setAccessibleDescription(
    "Choose a month of the year");
  tp.add(yearChoice = new JComboBox());
  yearChoice.setEditable(true);
  for (int i = yy - 5; i < yy + 5; i++)
   yearChoice.addItem(Integer.toString(i));
  yearChoice.setSelectedItem(Integer.toString(yy));
  yearChoice.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent ae){
    int i = yearChoice.getSelectedIndex();
    if (i >= 0){
     yy = Integer.parseInt(yearChoice.getSelectedItem()
       .toString());
     // System.out.println("Year=" + yy);
     recompute();
    }
   }
  });
  add(BorderLayout.CENTER, tp);
  JPanel bp = new JPanel();
  bp.setLayout(new GridLayout(7, 7));
  labs = new JButton[6][7]; // first row is days
  bp.add(b0 = new JButton("S"));
  bp.add(new JButton("M"));
  bp.add(new JButton("T"));
  bp.add(new JButton("W"));
  bp.add(new JButton("R"));
  bp.add(new JButton("F"));
  bp.add(new JButton("S"));
  ActionListener dateSetter = new ActionListener(){
   public void actionPerformed(ActionEvent e){
    String num = e.getActionCommand();
    if (!num.equals("")){
     // set the current day highlighted
     setDayActive(Integer.parseInt(num));
     // When this becomes a Bean, you can
     // fire some kind of DateChanged event here.
     // Also, build a similar daySetter for day-of-week btns.
    }
   }
  };
  // Construct all the buttons, and add them.
  for (int i = 0; i < 6; i++)
   for (int j = 0; j < 7; j++){
    bp.add(labs[i][j] = new JButton(""));
    labs[i][j].addActionListener(dateSetter);
   }
  add(BorderLayout.SOUTH, bp);
 }
 public final static int dom[] ={ 31, 28, 31, 30, /**//* jan feb mar apr */
 31, 30, 31, 31, /**//* may jun jul aug */
 30, 31, 30, 31 /**//* sep oct nov dec */
 };
 /** *//** Compute which days to put where, in the Cal panel */
 protected void recompute(){
  // System.out.println("Cal::recompute: " + yy + ":" + mm + ":" + dd);
  if (mm < 0 || mm > 11)
   throw new IllegalArgumentException("Month " + mm
     + " bad, must be 0-11");
  clearDayActive();
  calendar = new GregorianCalendar(yy, mm, dd);
  // Compute how much to leave before the first.
  // getDay() returns 0 for Sunday, which is just right.
  leadGap = new GregorianCalendar(yy, mm, 1).get(Calendar.DAY_OF_WEEK) - 1;
  // System.out.println("leadGap = " + leadGap);
  int daysInMonth = dom[mm];
  if (isLeap(calendar.get(Calendar.YEAR)) && mm > 1)
   ++daysInMonth;
  // Blank out the labels before 1st day of month
  for (int i = 0; i < leadGap; i++){
   labs[0][i].setText("");
  }
  // Fill in numbers for the day of month.
  for (int i = 1; i <= daysInMonth; i++){
   JButton b = labs[(leadGap + i - 1) / 7][(leadGap + i - 1) % 7];
   b.setText(Integer.toString(i));
  }
  // 7 days/week * up to 6 rows
  for (int i = leadGap + 1 + daysInMonth; i < 6 * 7; i++){
   labs[(i) / 7][(i) % 7].setText("");
  }
  // Shade current day, only if current month
  if (thisYear == yy && mm == thisMonth)
   setDayActive(dd); // shade the box for today
  // Say we need to be drawn on the screen
  repaint();
 }
 /** *//**
  * isLeap() returns true if the given year is a Leap Year.
  *
  * "a year is a leap year if it is divisible by 4 but not by 100, except
  * that years divisible by 400 *are* leap years." -- Kernighan & Ritchie,
  * _The C Programming Language_, p 37.
  */
 public boolean isLeap(int year){
  if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
   return true;
  return false;
 }
 /** *//** Set the year, month, and day */
 public void setDate(int yy, int mm, int dd){
  // System.out.println("Cal::setDate");
  this.yy = yy;
  this.mm = mm; // starts at 0, like Date
  this.dd = dd;
  recompute();
 }
 /** *//** Unset any previously highlighted day */
 private void clearDayActive(){
  JButton b;
  // First un-shade the previously-selected square, if any
  if (activeDay > 0){
   b = labs[(leadGap + activeDay - 1) / 7][(leadGap + activeDay - 1) % 7];
   b.setBackground(b0.getBackground());
   b.repaint();
   activeDay = -1;
  }
 }
 private int activeDay = -1;
 /** *//** Set just the day, on the current month */
 public void setDayActive(int newDay){
  clearDayActive();
  // Set the new one
  if (newDay <= 0)
   dd = new GregorianCalendar().get(Calendar.DAY_OF_MONTH);
  else
   dd = newDay;
  // Now shade the correct square
  Component square = labs[(leadGap + newDay - 1) / 7][(leadGap + newDay - 1) % 7];
  square.setBackground(Color.red);
  square.repaint();
  activeDay = newDay;
 }
 /** *//** For testing, a main program */
 public static void main(String[] av){
  JFrame f = new JFrame("Cal");
  Container c = f.getContentPane();
  c.setLayout(new FlowLayout());
  // for this test driver, hardcode 1995/02/10.
  c.add(new Cal(1995, 2 - 1, 10));
  // and beside it, the current month.
  c.add(new Cal());
  f.pack();
  f.setVisible(true);
 }
}

希望本文所述对大家的java程序设计有所帮助。

(0)

相关推荐

  • java实现文件变化监控的方法(推荐)

    一. spring配置文件:application.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://ww

  • Java Web项目中实现文件下载功能的实例教程

    需求:实现一个具有文件下载功能的网页,主要下载压缩包和图片 两种实现方法: 一:通过超链接实现下载 在HTML网页中,通过超链接链接到要下载的文件的地址 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>通过链接下载文件&

  • 使用Java编写一个简单的Web的监控系统

    公司的服务器需要实时监控,而且当用户空间已经满了,操作失败,或者出现程序Exception的时候就需要实时提醒,便于网管和程序员调式,这样就把这个实时监控系统分为了两部分,   第一部分:实时系统监控(cpu利用率,cpu温度,总内存大小,已使用内存大小) 第二部分:实时告警 由于无刷新实时性,所以只能使用Ajax,这里没有用到任何ajax框架,因为调用比较简单 大家知道,由于java的先天不足,对底层系统的调用和操作一般用jni来完成,特别是cpu温度,你在window下是打死用命令行是得不到

  • Java读取文件的简单实现方法

    本文实例讲述了Java读取文件的简单实现方法,非常实用.分享给大家供大家参考之用.具体方法如下: 这是一个简单的读取文件的代码,并试着读取一个log文件,再输出. 主要代码如下: import java.io.*; public class FileToString { public static String readFile(String fileName) { String output = ""; File file = new File(fileName); if(file.

  • java实现变更文件查询的方法

    本文实例讲述了java实现变更文件查询的方法.分享给大家供大家参考.具体如下: 自己经常发布包时需要查找那些文件时上次发包后更新的数据文件,所以写了这个发布包, 拷贝输出的命令,dos窗口下执行, 为啥不直接复制文件,因为java拷贝文件会修改文件最后修改日期,所以采用dos下的拷贝. /* * * 更改所生成文件模板为 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释 */ package com.cn.wangk.tools; import java.awt.B

  • java实现递归文件列表的方法

    本文实例讲述了java实现递归文件列表的方法.分享给大家供大家参考.具体如下: FileListing.java如下: import java.util.*; import java.io.*; /** * Recursive file listing under a specified directory. * * @author javapractices.com * @author Alex Wong * @author anonymous user */ public final cla

  • JAVA正则表达式过滤文件的实现方法

    JAVA正则表达式过滤文件的实现方法 正则表达式过滤文件列表,听起来简单,如果用java实现,还真需要一番周折,本文简析2种方式 1.适用于路径确定,文件名时正则表达式的情况(jdk6的写法) String filePattern = "/data/logs/.+\\.log"; File f = new File(filePattern); File parentDir = f.getParentFile(); String regex = f.getName(); FileSyst

  • java实现pdf文件截图的方法【附PDFRenderer.jar下载】

    本文实例讲述了java实现pdf文件截图的方法.分享给大家供大家参考,具体如下: 最近做的一个网站中,有个需求是上传pdf文件,显示pdf的封页,点击封页之后进行在线阅读,这里使用的是PDFRender对pdf进行截图. public static boolean createScreenShoot(String source, String target) { File file = new File(source); if (!file.exists()) { System.err.prin

  • Java读取TXT文件内容的方法

    Java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路读取甲方的信息:new FileInputStream(file) 目前这个信息已经读进来内存当中了.接下来需要解读成乙方可以理解的东西 既然你使用了FileInputStream().那么对应的需要使用InputStreamReader()这个方法进行解读刚才装进来内存当中的数据 解读完成后要输出

  • Java读取Properties文件几种方法总结

    使用J2SE API读取Properties文件的六种方法 1.使用Java.util.Properties类的load()方法 示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name)); Properties p = new Properties(); p.load(in); 2.使用java.util.ResourceBundle类的getBundle()方法 示例: ResourceBundle rb

  • Java读取properties文件连接数据库的方法示例

    之前我们在入门jdbc的时候,常用这种方法连接数据库: package util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionManager { public static Connection getConnection() { Connection conn = null; try { Class.forName

  • java批量修改文件后缀名方法总结

    突然需要改一堆文件的后缀名,所以想编程解决,话不多说直接上代码 java import java.io.File; import java.util.Scanner; public class FileEdit { public static void renameFiles(String path, String oldExt, String newExt) { File file = new File(path); if (!file.exists()) { System.err.print

  • Java读写文件创建文件夹多种方法示例详解

    出现乱码请修改为 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path), "GBK")); 一.获得控制台用户输入的信息 复制代码 代码如下: public String getInputMessage() throws IOException...{    System.out.println("请输入您的命令∶");    byte buffe

  • 5种解决Java独占写文件的方法

    本文实例讲解了5种解决Java独占写文件的方法,包含自己的一些理解,如若有不妥的地方欢迎大家提出. 方案1:利用RandomAccessFile的文件操作选项s,s即表示同步锁方式写 RandomAccessFile file = new RandomAccessFile(file, "rws"); 方案2:利用FileChannel的文件锁 File file = new File("test.txt"); FileInputStream fis = new Fi

随机推荐