20个非常有用的Java程序片段

copy by http://coolshell.cn/articles/889.html

--

1. 字符串有整型的相互转换

String a = String.valueOf(2);   //integer to numeric string   
int i = Integer.parseInt(a);    //numeric string to an int  

2. 向文件末尾添加内容

        BufferedWriter out = null;
        try {
            out = new BufferedWriter(new FileWriter("filename", true));
            out.write("aString");
        } catch (IOException e) {
            // error processing code
        } finally {
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

3. 得到当前方法的名字

String methodName = Thread.currentThread().getStackTrace()[1].getMethodName(); 

4. 转字符串到日期

SimpleDateFormat format = new SimpleDateFormat( "dd.MM.yyyy" );   Date date = format.parse( myString ); 

5. 使用JDBC链接Oracle

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.util.Date utilDate = new java.util.Date(); 
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());  

7. 使用NIO进行快速的文件拷贝

    public static void main(String[] args) {
        try {
            fileCopy(new File("d://temp.txt"), new File("d://t.txt"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    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. 创建图片的缩略图

    public static void main(String[] args) {

        try {
            createThumbnail("d://a.png", 500, 500, 2000, "d://b.png");
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    private static 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 格式的数据

请先阅读这篇文章 了解一些细节,
并下面这个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

阅读这篇文章 了解更多细节

   
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 代理设置

阅读这篇 文章 了解更多细节。

        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 示例

请先阅读这篇文章 了解更多信息

   
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. 抓屏程序

阅读这篇文章 获得更多信息。

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

public static void main(String[] args) {
        try {
            captureScreen("d://a.jpg");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static 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. 列出文件和目录

    public static void main(String[] args) {
        File dir = new File("d://");
        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];
                System.out.println(filename);
            }
        }
        System.out.println("--------");
        // 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文件

   
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 文件

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代码

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;

/**
 * java 测试类 <br>
 * 
 * @author song
 * @date 2012-7-9 上午09:29:15
 */
public class Test {

    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) {
        Test parser = new Test();
        parser.getAllUserNames("d:\\test.xml");
    }
}

17. 把 Array 转换成 Map 

import java.util.Map;
import org.apache.commons.lang.ArrayUtils;

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. 发送邮件

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * java 测试类 <br>
 * 
 * @author song
 * @date 2012-7-9 上午09:29:15
 */
public class Test {
    public static void main(String[] args) {
        String recipients[] = { "12345678@qq.com" };
        try {
            postMail(recipients, "subject", "message", "********@qq.com");
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    public static 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 请求

    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 测试类 <br>
 * 
 * @author song
 * @date 2012-7-9 上午09:29:15
 */
public class Test {
    /**
     * * Reallocates an array with a new size, and copies the contents * of the
     * old array to the new array. * @param oldArray the old array, to be
     * reallocated. * @param newSize the new array size. * @return A new array
     * with the same contents.
     */
    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]);
    }

}

 计算字符串中各个字符出现的次数

import java.util.HashMap;
import java.util.Map;

public class Test {

    public static void main(String[] args) {
        String s = "啦啦啦啦啦你好你不好我好112";
        Map<Character, Integer> m = new HashMap<Character, Integer>();

        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            int count = 1;
            if (m.containsKey(c)) {
                count += m.get(c);
            }
            m.put(c, count);
        }

        for (Map.Entry<Character, Integer> e : m.entrySet()) {
            System.out.println(e.getKey() + " : " + e.getValue());
        }
    }

}

 

 

 

 

 

 

--

原文地址:https://www.cnblogs.com/syc001/p/2606245.html