20个经典的Java应用

12年前
下面是20个非常有用的Java程序片段,希望能对你有用。
1. 字符串有整型的相互转换
   
Java代码  String a = String.valueOf(2); 或者 String a=2+"";   //integer to numeric string  int i = Integer.parseInt(a); //numeric string to an int
2. 向文件末尾添加内容
   
Java代码  BufferedWriter out = null;     try {      out = new BufferedWriter(new FileWriter(”filename”, true));      out.write(”aString”);     } catch (IOException e) {      // error processing code     } finally {  if (out != null) {     out.close();     }  }

3. 得到当前方法的名字
   
Java代码  String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();

4. 转字符串到日期
   
Java代码  java.util.Date = java.text.DateFormat.getDateInstance().parse(date String);
或者是:
   
SimpleDateFormat format = new SimpleDateFormat( "dd.MM.yyyy" );  Date date = format.parse( myString );
5. 使用JDBC链接Oracle
   
Java代码  public class OracleJdbcTest{     String driverClass = "oracle.jdbc.driver.OracleDriver";     Connection con;     public void init(FileInputStream fs) throws ClassNotFoundException, SQLException, FileNotFoundException, IOException{       Properties props = new Properties();       props.load(fs);       String url = props.getProperty("db.url");       String userName = props.getProperty("db.user");       String password = props.getProperty("db.password");       Class.forName(driverClass);       con=DriverManager.getConnection(url, userName, password);     }     public void fetch() throws SQLException, IOException{       PreparedStatement ps = con.prepareStatement("select SYSDATE from dual");       ResultSet rs = ps.executeQuery();       while (rs.next()){         // do the thing you do       }       rs.close();       ps.close();     }     public static void main(String[] args){      OracleJdbcTest test = new OracleJdbcTest();      test.init();      test.fetch();      }    }

 6. 把 Java util.Date 转成 sql.Date
   
Java代码   java.util.Date utilDate = new java.util.Date();   java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());

7. 使用NIO进行快速的文件拷贝
   
Java代码  public static void fileCopy( File in, File out )throws IOException{     FileChannel inChannel = new FileInputStream( in ).getChannel();     FileChannel outChannel = new FileOutputStream( out ).getChannel();     try{      //          inChannel.transferTo(0, inChannel.size(), outChannel);      // original -- apparently has trouble copying large files on Windows      // magic number for Windows, 64Mb - 32Kb)         int maxCount = (64 * 1024 * 1024) - (32 * 1024);        long size = inChannel.size();        long position = 0;        while ( position < size ){           position += inChannel.transferTo( position, maxCount, outChannel );        }     }finally{      if ( inChannel != null ){         inChannel.close();      }      if ( outChannel != null ){         outChannel.close();      }     }  }
8. 创建图片的缩略图
  
Java代码   private void createThumbnail(String filename, int thumbWidth, int thumbHeight, int quality, String outFilename)      throws InterruptedException, FileNotFoundException, IOException      {      // load image from filename      Image image = Toolkit.getDefaultToolkit().getImage(filename);      MediaTracker mediaTracker = new MediaTracker(new Container());      mediaTracker.addImage(image, 0);      mediaTracker.waitForID(0);      // use this to test for errors at this point: System.out.println(mediaTracker.isErrorAny());      // determine thumbnail size from WIDTH and HEIGHT      double thumbRatio = (double)thumbWidth / (double)thumbHeight;      int imageWidth = image.getWidth(null);      int imageHeight = image.getHeight(null);      double imageRatio = (double)imageWidth / (double)imageHeight;      if (thumbRatio < imageRatio) {      thumbHeight = (int)(thumbWidth / imageRatio);      } else {      thumbWidth = (int)(thumbHeight * imageRatio);      }    // draw original image to thumbnail image object and      // scale it to the new size on-the-fly      BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);      Graphics2D graphics2D = thumbImage.createGraphics();      graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);      graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);      // save thumbnail image to outFilename      BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outFilename));      JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);      JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);      quality = Math.max(0, Math.min(quality, 100));      param.setQuality((float)quality / 100.0f, false);      encoder.setJPEGEncodeParam(param);      encoder.encode(thumbImage);      out.close();      }
9. 创建 JSON 格式的数据
   
Java代码      请先阅读这篇文章 了解一些细节,      并下面这个JAR 文件:json-rpc-1.0.jar (75 kb)      import org.json.JSONObject;      ...      ...      JSONObject json = new JSONObject();      json.put("city", "Mumbai");      json.put("country", "India");      ...      String output = json.toString();      ...
10. 使用iText JAR生成PDF
  
Java代码      阅读这篇文章 了解更多细节      import java.io.File;      import java.io.FileOutputStream;      import java.io.OutputStream;      import java.util.Date;      import com.lowagie.text.Document;      import com.lowagie.text.Paragraph;      import com.lowagie.text.pdf.PdfWriter;      public class GeneratePDF {      public static void main(String[] args) {      try {      OutputStream file = new FileOutputStream(new File("C:\\Test.pdf"));      Document document = new Document();      PdfWriter.getInstance(document, file);      document.open();      document.add(new Paragraph("Hello Kiran"));      document.add(new Paragraph(new Date().toString()));      document.close();      file.close();      } catch (Exception e) {      e.printStackTrace();      }      }      }
11. HTTP 代理设置
  
 Java代码      阅读这篇 文章 了解更多细节。      System.getProperties().put("http.proxyHost", "someProxyURL");      System.getProperties().put("http.proxyPort", "someProxyPort");      System.getProperties().put("http.proxyUser", "someUserName");      System.getProperties().put("http.proxyPassword", "somePassword");

12. 单实例Singleton 示例
   
Java代码      请先阅读这篇文章 了解更多信息      public class SimpleSingleton {      private static SimpleSingleton singleInstance =  new SimpleSingleton();      //Marking default constructor private      //to avoid direct instantiation.      private SimpleSingleton() {      }      //Get instance for class SimpleSingleton      public static SimpleSingleton getInstance() {      return singleInstance;      }      }      另一种实现      public enum SimpleSingleton {      INSTANCE;      public void doSomething() {      }      }      //Call the method from Singleton:      SimpleSingleton.INSTANCE.doSomething();
13. 抓屏程序
   
Java代码      阅读这篇文章 获得更多信息。      import java.awt.Dimension;      import java.awt.Rectangle;      import java.awt.Robot;      import java.awt.Toolkit;      import java.awt.image.BufferedImage;      import javax.imageio.ImageIO;      import java.io.File;      ...      public void captureScreen(String fileName) throws Exception {      Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();      Rectangle screenRectangle = new Rectangle(screenSize);      Robot robot = new Robot();      BufferedImage image = robot.createScreenCapture(screenRectangle);      ImageIO.write(image, "png", new File(fileName));      }      ...      阅读这篇文章 获得更多信息。      import java.awt.Dimension;      import java.awt.Rectangle;      import java.awt.Robot;      import java.awt.Toolkit;      import java.awt.image.BufferedImage;      import javax.imageio.ImageIO;      import java.io.File;      ...      public void captureScreen(String fileName) throws Exception {      Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();      Rectangle screenRectangle = new Rectangle(screenSize);      Robot robot = new Robot();      BufferedImage image = robot.createScreenCapture(screenRectangle);      ImageIO.write(image, "png", new File(fileName));      }

14. 列出文件和目录
   
Java代码      File dir = new File("directoryName");      String[] children = dir.list();      if (children == null) {      // Either dir does not exist or is not a directory      } else {      for (int i=0; i < children.length; i++) {      // Get filename of file or directory      String filename = children[i];      }      }      // It is also possible to filter the list of returned files.      // This example does not return any files that start with `.'.      FilenameFilter filter = new FilenameFilter() {      public boolean accept(File dir, String name) {      return !name.startsWith(".");      }      };      children = dir.list(filter);      // The list of files can also be retrieved as File objects      File[] files = dir.listFiles();      // This filter only returns directories      FileFilter fileFilter = new FileFilter() {      public boolean accept(File file) {      return file.isDirectory();      }      };      files = dir.listFiles(fileFilter);
15. 创建ZIP和JAR文件
  
 Java代码      import java.util.zip.*;      import java.io.*;      public class ZipIt {      public static void main(String args[]) throws IOException {      if (args.length < 2) {      System.err.println("usage: java ZipIt Zip.zip file1 file2 file3");      System.exit(-1);      }      File zipFile = new File(args[0]);      if (zipFile.exists()) {      System.err.println("Zip file already exists, please try another");      System.exit(-2);      }      FileOutputStream fos = new FileOutputStream(zipFile);      ZipOutputStream zos = new ZipOutputStream(fos);      int bytesRead;      byte[] buffer = new byte[1024];      CRC32 crc = new CRC32();      for (int i=1, n=args.length; i < n; i++) {      String name = args[i];      File file = new File(name);      if (!file.exists()) {      System.err.println("Skipping: " + name);      continue;      }      BufferedInputStream bis = new BufferedInputStream(      new FileInputStream(file));      crc.reset();      while ((bytesRead = bis.read(buffer)) != -1) {      crc.update(buffer, 0, bytesRead);      }    bis.close();      // Reset to beginning of input stream      bis = new BufferedInputStream(      new FileInputStream(file));      ZipEntry entry = new ZipEntry(name);      entry.setMethod(ZipEntry.STORED);      entry.setCompressedSize(file.length());      entry.setSize(file.length());      entry.setCrc(crc.getValue());      zos.putNextEntry(entry);      while ((bytesRead = bis.read(buffer)) != -1) {      zos.write(buffer, 0, bytesRead);      }      bis.close();      }      zos.close();      }      }
16. 解析/读取XML 文件
   
Java代码      XML文件      <?xml version="1.0"?>      <students>      <student>      <name>John</name>      <grade>B</grade>      <age>12</age>      </student>      <student>      <name>Mary</name>      <grade>A</grade>      <age>11</age>      </student>      <student>      <name>Simon</name>      <grade>A</grade>      <age>18</age>      </student>      </students>      Java代码      package net.viralpatel.java.xmlparser;      import java.io.File;      import javax.xml.parsers.DocumentBuilder;      import javax.xml.parsers.DocumentBuilderFactory;      import org.w3c.dom.Document;      import org.w3c.dom.Element;      import org.w3c.dom.Node;      import org.w3c.dom.NodeList;      public class XMLParser {      public void getAllUserNames(String fileName) {      try {      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();      DocumentBuilder db = dbf.newDocumentBuilder();      File file = new File(fileName);      if (file.exists()) {      Document doc = db.parse(file);      Element docEle = doc.getDocumentElement();      // Print root element of the document      System.out.println("Root element of the document: "      + docEle.getNodeName());      NodeList studentList = docEle.getElementsByTagName("student");      // Print total student elements in document      System.out      .println("Total students: " + studentList.getLength());      if (studentList != null && studentList.getLength() > 0) {      for (int i = 0; i < studentList.getLength(); i++) {      Node node = studentList.item(i);    if (node.getNodeType() == Node.ELEMENT_NODE) {      System.out.println("=====================");      Element e = (Element) node;      NodeList nodeList = e.getElementsByTagName("name");      System.out.println("Name: "      + nodeList.item(0).getChildNodes().item(0)      .getNodeValue());      nodeList = e.getElementsByTagName("grade");      System.out.println("Grade: "      + nodeList.item(0).getChildNodes().item(0)      .getNodeValue());      nodeList = e.getElementsByTagName("age");      System.out.println("Age: "      + nodeList.item(0).getChildNodes().item(0)      .getNodeValue());      }      }      } else {      System.exit(1);      }      }      } catch (Exception e) {      System.out.println(e);      }      }      public static void main(String[] args) {      XMLParser parser = new XMLParser();      parser.getAllUserNames("c:\\test.xml");      }      }
17. 把 Array 转换成 Map
   
Java代码      import java.util.Map;      import org.apache.commons.lang.ArrayUtils;      public class Main {      public static void main(String[] args) {      String[][] countries = { { "United States", "New York" }, { "United Kingdom", "London" },      { "Netherland", "Amsterdam" }, { "Japan", "Tokyo" }, { "France", "Paris" } };      Map countryCapitals = ArrayUtils.toMap(countries);      System.out.println("Capital of Japan is " + countryCapitals.get("Japan"));      System.out.println("Capital of France is " + countryCapitals.get("France"));      }      }
18. 发送邮件
   
Java代码      import javax.mail.*;      import javax.mail.internet.*;      import java.util.*;      public void postMail( String recipients[ ], String subject, String message , String from) throws MessagingException      {      boolean debug = false;      //Set the host smtp address      Properties props = new Properties();      props.put("mail.smtp.host", "smtp.example.com");      // create some properties and get the default Session      Session session = Session.getDefaultInstance(props, null);      session.setDebug(debug);      // create a message      Message msg = new MimeMessage(session);      // set the from and to address      InternetAddress addressfrom = new InternetAddress(from);      msg.setfrom(addressfrom);      InternetAddress[] addressTo = new InternetAddress[recipients.length];      for (int i = 0; i < recipients.length; i++)      {      addressTo[i] = new InternetAddress(recipients[i]);      }      msg.setRecipients(Message.RecipientType.TO, addressTo);      // Optional : You can also set your custom headers in the Email if you Want      msg.addHeader("MyHeaderName", "myHeaderValue");      // Setting the Subject and Content Type      msg.setSubject(subject);      msg.setContent(message, "text/plain");      Transport.send(msg);      }

19. 发送代数据的HTTP 请求
   
Java代码      import java.io.BufferedReader;      import java.io.InputStreamReader;      import java.net.URL;      public class Main {      public static void main(String[] args)  {      try {      URL my_url = new URL("http://coolshell.cn/");      BufferedReader br = new BufferedReader(new InputStreamReader(my_url.openStream()));      String strTemp = "";      while(null != (strTemp = br.readLine())){      System.out.println(strTemp);      }      } catch (Exception ex) {      ex.printStackTrace();      }      }      }
20. 改变数组的大小
   
Java代码      查看源代码打印帮助      private static Object resizeArray (Object oldArray, int newSize) {      int oldSize = java.lang.reflect.Array.getLength(oldArray);      Class elementType = oldArray.getClass().getComponentType();      Object newArray = java.lang.reflect.Array.newInstance(      elementType,newSize);      int preserveLength = Math.min(oldSize,newSize);      if (preserveLength > 0)      System.arraycopy (oldArray,0,newArray,0,preserveLength);      return newArray;      }      // Test routine for resizeArray().      public static void main (String[] args) {      int[] a = {1,2,3};      a = (int[])resizeArray(a,5);      a[3] = 4;      a[4] = 5;      for (int i=0; i<a.length; i++)      System.out.println (a[i]);      }