25
回答
20非常有用的Java程序片段
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

下面是20个非常有用的Java程序片段,希望能对你有用。

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

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


2. 向文件末尾添加内容

01   
02 BufferedWriter out = null;  
03 try {  
04     out = new BufferedWriter(new FileWriter(”filename”, true));  
05     out.write(”aString”);  
06 } catch (IOException e) {  
07     // error processing code  
08 } finally {  
09     if (out != null) {  
10         out.close();  
11     }  
12

3. 得到当前方法的名字

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

4. 转字符串到日期

1   
2 java.util.Date = java.text.DateFormat.getDateInstance().parse(date String); 

或者是:

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

5. 使用JDBC链接Oracle

01 public class OracleJdbcTest  
02 {  
03     String driverClass = "oracle.jdbc.driver.OracleDriver";  
04   
05     Connection con;  
06   
07     public void init(FileInputStream fs) throws ClassNotFoundException, SQLException, FileNotFoundException, IOException  
08     {  
09         Properties props = new Properties();  
10         props.load(fs);  
11         String url = props.getProperty("db.url");  
12         String userName = props.getProperty("db.user");  
13         String password = props.getProperty("db.password");  
14         Class.forName(driverClass);  
15   
16         con=DriverManager.getConnection(url, userName, password);  
17     }  
18   
19     public void fetch() throws SQLException, IOException  
20     {  
21         PreparedStatement ps = con.prepareStatement("select SYSDATE from dual");  
22         ResultSet rs = ps.executeQuery();  
23   
24         while (rs.next())  
25         {  
26             // do the thing you do  
27         }  
28         rs.close();  
29         ps.close();  
30     }  
31   
32     public static void main(String[] args)  
33     {  
34         OracleJdbcTest test = new OracleJdbcTest();  
35         test.init();  
36         test.fetch();  
37     }  
38

6. 把 Java util.Date 转成 sql.Date

1 java.util.Date utilDate = new java.util.Date();  
2 java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); 

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

01 public static void fileCopy( File in, File out )  
02             throws IOException  
03     {  
04         FileChannel inChannel = new FileInputStream( in ).getChannel();  
05         FileChannel outChannel = new FileOutputStream( out ).getChannel();  
06         try 
07         {  
08 //          inChannel.transferTo(0, inChannel.size(), outChannel);      // original -- apparently has trouble copying large files on Windows  
09   
10             // magic number for Windows, 64Mb - 32Kb)  
11             int maxCount = (64 * 1024 * 1024) - (32 * 1024);  
12             long size = inChannel.size();  
13             long position = 0;  
14             while ( position < size )  
15             {  
16                position += inChannel.transferTo( position, maxCount, outChannel );  
17             }  
18         }  
19         finally 
20         {  
21             if ( inChannel != null )  
22             {  
23                inChannel.close();  
24             }  
25             if ( outChannel != null )  
26             {  
27                 outChannel.close();  
28             }  
29         }  
30     

8. 创建图片的缩略图

01 private void createThumbnail(String filename, int thumbWidth, int thumbHeight, int quality, String outFilename)  
02         throws InterruptedException, FileNotFoundException, IOException  
03     {  
04         // load image from filename  
05         Image image = Toolkit.getDefaultToolkit().getImage(filename);  
06         MediaTracker mediaTracker = new MediaTracker(new Container());  
07         mediaTracker.addImage(image, 0);  
08         mediaTracker.waitForID(0);  
09         // use this to test for errors at this point: System.out.println(mediaTracker.isErrorAny());  
10   
11         // determine thumbnail size from WIDTH and HEIGHT  
12         double thumbRatio = (double)thumbWidth / (double)thumbHeight;  
13         int imageWidth = image.getWidth(null);  
14         int imageHeight = image.getHeight(null);  
15         double imageRatio = (double)imageWidth / (double)imageHeight;  
16         if (thumbRatio < imageRatio) {  
17             thumbHeight = (int)(thumbWidth / imageRatio);  
18         } else {  
19             thumbWidth = (int)(thumbHeight * imageRatio);  
20         }  
21   
22         // draw original image to thumbnail image object and  
23         // scale it to the new size on-the-fly  
24         BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);  
25         Graphics2D graphics2D = thumbImage.createGraphics();  
26         graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);  
27         graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);  
28   
29         // save thumbnail image to outFilename  
30         BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outFilename));  
31         JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  
32         JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);  
33         quality = Math.max(0, Math.min(quality, 100));  
34         param.setQuality((float)quality / 100.0f, false);  
35         encoder.setJPEGEncodeParam(param);  
36         encoder.encode(thumbImage);  
37         out.close();  
38     

9. 创建 JSON 格式的数据

请先阅读这篇文章 了解一些细节,
并下面这个JAR 文件:json-rpc-1.0.jar (75 kb)

1 import org.json.JSONObject;  
2 ...  
3 ...  
4 JSONObject json = new JSONObject();  
5 json.put("city", "Mumbai");  
6 json.put("country", "India");  
7 ...  
8 String output = json.toString();  
9 ... 

10. 使用iText JAR生成PDF

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

01   
02 import java.io.File;  
03 import java.io.FileOutputStream;  
04 import java.io.OutputStream;  
05 import java.util.Date;  
06   
07 import com.lowagie.text.Document;  
08 import com.lowagie.text.Paragraph;  
09 import com.lowagie.text.pdf.PdfWriter;  
10   
11 public class GeneratePDF {  
12   
13     public static void main(String[] args) {  
14         try {  
15             OutputStream file = new FileOutputStream(new File("C:\\Test.pdf"));  
16   
17             Document document = new Document();  
18             PdfWriter.getInstance(document, file);  
19             document.open();  
20             document.add(new Paragraph("Hello Kiran"));  
21             document.add(new Paragraph(new Date().toString()));  
22   
23             document.close();  
24             file.close();  
25   
26         } catch (Exception e) {  
27   
28             e.printStackTrace();  
29         }  
30     }  
31

11. HTTP 代理设置

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

1   
2 System.getProperties().put("http.proxyHost", "someProxyURL");  
3 System.getProperties().put("http.proxyPort", "someProxyPort");  
4 System.getProperties().put("http.proxyUser", "someUserName");  
5 System.getProperties().put("http.proxyPassword", "somePassword"); 

12. 单实例Singleton 示例

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

01   
02 public class SimpleSingleton {  
03     private static SimpleSingleton singleInstance =  new SimpleSingleton();  
04   
05     //Marking default constructor private  
06     //to avoid direct instantiation.  
07     private SimpleSingleton() {  
08     }  
09   
10     //Get instance for class SimpleSingleton  
11     public static SimpleSingleton getInstance() {  
12   
13         return singleInstance;  
14     }  
15

另一种实现

1 public enum SimpleSingleton {  
2     INSTANCE;  
3     public void doSomething() {  
4     }  
5 }  
6   
7 //Call the method from Singleton:  
8 SimpleSingleton.INSTANCE.doSomething(); 

13. 抓屏程序

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

01 import java.awt.Dimension;  
02 import java.awt.Rectangle;  
03 import java.awt.Robot;  
04 import java.awt.Toolkit;  
05 import java.awt.image.BufferedImage;  
06 import javax.imageio.ImageIO;  
07 import java.io.File;  
08   
09 ...  
10   
11 public void captureScreen(String fileName) throws Exception {  
12   
13    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();  
14    Rectangle screenRectangle = new Rectangle(screenSize);  
15    Robot robot = new Robot();  
16    BufferedImage image = robot.createScreenCapture(screenRectangle);  
17    ImageIO.write(image, "png", new File(fileName));  
18   
19 }  
20 ... 

 

 

14. 列出文件和目录

01 File dir = new File("directoryName");  
02   String[] children = dir.list();  
03   if (children == null) {  
04       // Either dir does not exist or is not a directory  
05   } else {  
06       for (int i=0; i < children.length; i++) {  
07           // Get filename of file or directory  
08           String filename = children[i];  
09       }  
10   }  
11   
12   // It is also possible to filter the list of returned files.  
13   // This example does not return any files that start with `.'.  
14   FilenameFilter filter = new FilenameFilter() {  
15       public boolean accept(File dir, String name) {  
16           return !name.startsWith(".");  
17       }  
18   };  
19   children = dir.list(filter);  
20   
21   // The list of files can also be retrieved as File objects  
22   File[] files = dir.listFiles();  
23   
24   // This filter only returns directories  
25   FileFilter fileFilter = new FileFilter() {  
26       public boolean accept(File file) {  
27           return file.isDirectory();  
28       }  
29   };  
30   files = dir.listFiles(fileFilter); 

15. 创建ZIP和JAR文件

01   
02 import java.util.zip.*;  
03 import java.io.*;  
04   
05 public class ZipIt {  
06     public static void main(String args[]) throws IOException {  
07         if (args.length < 2) {  
08             System.err.println("usage: java ZipIt Zip.zip file1 file2 file3");  
09             System.exit(-1);  
10         }  
11         File zipFile = new File(args[0]);  
12         if (zipFile.exists()) {  
13             System.err.println("Zip file already exists, please try another");  
14             System.exit(-2);  
15         }  
16         FileOutputStream fos = new FileOutputStream(zipFile);  
17         ZipOutputStream zos = new ZipOutputStream(fos);  
18         int bytesRead;  
19         byte[] buffer = new byte[1024];  
20         CRC32 crc = new CRC32();  
21         for (int i=1, n=args.length; i < n; i++) {  
22             String name = args[i];  
23             File file = new File(name);  
24             if (!file.exists()) {  
25                 System.err.println("Skipping: " + name);  
26                 continue;  
27             }  
28             BufferedInputStream bis = new BufferedInputStream(  
29                 new FileInputStream(file));  
30             crc.reset();  
31             while ((bytesRead = bis.read(buffer)) != -1) {  
32                 crc.update(buffer, 0, bytesRead);  
33             }  
34             bis.close();  
35             // Reset to beginning of input stream  
36             bis = new BufferedInputStream(  
37                 new FileInputStream(file));  
38             ZipEntry entry = new ZipEntry(name);  
39             entry.setMethod(ZipEntry.STORED);  
40             entry.setCompressedSize(file.length());  
41             entry.setSize(file.length());  
42             entry.setCrc(crc.getValue());  
43             zos.putNextEntry(entry);  
44             while ((bytesRead = bis.read(buffer)) != -1) {  
45                 zos.write(buffer, 0, bytesRead);  
46             }  
47             bis.close();  
48         }  
49         zos.close();  
50     }  
51

16. 解析/读取XML 文件

XML文件

01 <?xml version="1.0"?> 
02 <students
03     <student
04         <name>John</name
05         <grade>B</grade
06         <age>12</age
07     </student
08     <student
09         <name>Mary</name
10         <grade>A</grade
11         <age>11</age
12     </student
13     <student
14         <name>Simon</name
15         <grade>A</grade
16         <age>18</age
17     </student
18 </students

Java代码

01   
02 package net.viralpatel.java.xmlparser;  
03   
04 import java.io.File;  
05 import javax.xml.parsers.DocumentBuilder;  
06 import javax.xml.parsers.DocumentBuilderFactory;  
07   
08 import org.w3c.dom.Document;  
09 import org.w3c.dom.Element;  
10 import org.w3c.dom.Node;  
11 import org.w3c.dom.NodeList;  
12   
13 public class XMLParser {  
14   
15     public void getAllUserNames(String fileName) {  
16         try {  
17             DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();  
18             DocumentBuilder db = dbf.newDocumentBuilder();  
19             File file = new File(fileName);  
20             if (file.exists()) {  
21                 Document doc = db.parse(file);  
22                 Element docEle = doc.getDocumentElement();  
23   
24                 // Print root element of the document  
25                 System.out.println("Root element of the document: " 
26                         + docEle.getNodeName());  
27   
28                 NodeList studentList = docEle.getElementsByTagName("student");  
29   
30                 // Print total student elements in document  
31                 System.out  
32                         .println("Total students: " + studentList.getLength());  
33   
34                 if (studentList != null && studentList.getLength() > 0) {  
35                     for (int i = 0; i < studentList.getLength(); i++) {  
36   
37                         Node node = studentList.item(i);  
38   
39                         if (node.getNodeType() == Node.ELEMENT_NODE) {  
40   
41                             System.out  
42                                     .println("=====================");  
43   
44                             Element e = (Element) node;  
45                             NodeList nodeList = e.getElementsByTagName("name");  
46                             System.out.println("Name: " 
47                                     + nodeList.item(0).getChildNodes().item(0)  
48                                             .getNodeValue());  
49   
50                             nodeList = e.getElementsByTagName("grade");  
51                             System.out.println("Grade: " 
52                                     + nodeList.item(0).getChildNodes().item(0)  
53                                             .getNodeValue());  
54   
55                             nodeList = e.getElementsByTagName("age");  
56                             System.out.println("Age: " 
57                                     + nodeList.item(0).getChildNodes().item(0)  
58                                             .getNodeValue());  
59                         }  
60                     }  
61                 } else {  
62                     System.exit(1);  
63                 }  
64             }  
65         } catch (Exception e) {  
66             System.out.println(e);  
67         }  
68     }  
69     public static void main(String[] args) {  
70   
71         XMLParser parser = new XMLParser();  
72         parser.getAllUserNames("c:\\test.xml");  
73     }  
74

17. 把 Array 转换成 Map 

01   
02 import java.util.Map;  
03 import org.apache.commons.lang.ArrayUtils;  
04   
05 public class Main {  
06   
07   public static void main(String[] args) {  
08     String[][] countries = { { "United States", "New York" }, { "United Kingdom", "London" },  
09         { "Netherland", "Amsterdam" }, { "Japan", "Tokyo" }, { "France", "Paris" } };  
10   
11     Map countryCapitals = ArrayUtils.toMap(countries);  
12   
13     System.out.println("Capital of Japan is " + countryCapitals.get("Japan"));  
14     System.out.println("Capital of France is " + countryCapitals.get("France"));  
15   }  
16

18. 发送邮件

01 import javax.mail.*;  
02 import javax.mail.internet.*;  
03 import java.util.*;  
04   
05 public void postMail( String recipients[ ], String subject, String message , String from) throws MessagingException  
06 {  
07     boolean debug = false;  
08   
09      //Set the host smtp address  
10      Properties props = new Properties();  
11      props.put("mail.smtp.host", "smtp.example.com");  
12   
13     // create some properties and get the default Session  
14     Session session = Session.getDefaultInstance(props, null);  
15     session.setDebug(debug);  
16   
17     // create a message  
18     Message msg = new MimeMessage(session);  
19   
20     // set the from and to address  
21     InternetAddress addressFrom = new InternetAddress(from);  
22     msg.setFrom(addressFrom);  
23   
24     InternetAddress[] addressTo = new InternetAddress[recipients.length];  
25     for (int i = 0; i < recipients.length; i++)  
26     {  
27         addressTo[i] = new InternetAddress(recipients[i]);  
28     }  
29     msg.setRecipients(Message.RecipientType.TO, addressTo);  
30   
31     // Optional : You can also set your custom headers in the Email if you Want  
32     msg.addHeader("MyHeaderName", "myHeaderValue");  
33   
34     // Setting the Subject and Content Type  
35     msg.setSubject(subject);  
36     msg.setContent(message, "text/plain");  
37     Transport.send(msg);  
38

19. 发送代数据的HTTP 请求

01   
02 import java.io.BufferedReader;  
03 import java.io.InputStreamReader;  
04 import java.net.URL;  
05   
06 public class Main {  
07     public static void main(String[] args)  {  
08         try {  
09             URL my_url = new URL("http://coolshell.cn/");  
10             BufferedReader br = new BufferedReader(new InputStreamReader(my_url.openStream()));  
11             String strTemp = "";  
12             while(null != (strTemp = br.readLine())){  
13             System.out.println(strTemp);  
14         }  
15         } catch (Exception ex) {  
16             ex.printStackTrace();  
17         }  
18     }  
19 }

20. 改变数组的大小

01   
02 /** 
03 * Reallocates an array with a new size, and copies the contents 
04 * of the old array to the new array. 
05 * @param oldArray  the old array, to be reallocated. 
06 * @param newSize   the new array size. 
07 * @return          A new array with the same contents. 
08 */ 
09 private static Object resizeArray (Object oldArray, int newSize) {  
10    int oldSize = java.lang.reflect.Array.getLength(oldArray);  
11    Class elementType = oldArray.getClass().getComponentType();  
12    Object newArray = java.lang.reflect.Array.newInstance(  
13          elementType,newSize);  
14    int preserveLength = Math.min(oldSize,newSize);  
15    if (preserveLength > 0)  
16       System.arraycopy (oldArray,0,newArray,0,preserveLength);  
17    return newArray;  
18 }  
19   
20 // Test routine for resizeArray().  
21 public static void main (String[] args) {  
22    int[] a = {1,2,3};  
23    a = (int[])resizeArray(a,5);  
24    a[3] = 4;  
25    a[4] = 5;  
26    for (int i=0; i<a.length; i++)  
27       System.out.println (a[i]);  
28 }

(全文完)

举报
crazyinsomnia
发帖于8年前 25回/5K+阅
共有25个评论 最后回答: 5年前

引用来自#9楼“Shny”的帖子

港滴波, 看的眼花缭乱, 只能看黑体知道是做什么用的

顺便问下, NIO 真的比IO的效率高吗?

非也,简单的说,只有多并发连接多的时候才能体现出 NIO 的优势。

引用来自#10楼“红薯”的帖子

引用来自#9楼“Shny”的帖子

港滴波, 看的眼花缭乱, 只能看黑体知道是做什么用的

顺便问下, NIO 真的比IO的效率高吗?

非也,简单的说,只有多并发连接多的时候才能体现出 NIO 的优势。

 靠!有啥你不懂的啊?

顶部