【注】
[1]windows设置环境变量,例如设置jdk为1.7.0版本(一定要把%path%加上):
set path="D:\ProgramFiles\Java\jdk1.7.0\bin";%path%
[2]指定编译、执行的地址
编译:javac
-sourcepath victoria.demoes -d victoria.demoes victoria.demoes\Hello.java
执行:java
-cp victoria.demoes com/alibaba/demo/Hello
1、流失时间标准写法
- long startTime = System.currentTimeMillis();
- //.......
- if (logger.isInfoEnabled()) {
- long elapsedTime = System.currentTimeMillis() - startTime;
- logger.info("Root WebApplicationContext: initialization completed in " + elapsedTime + " ms");
- }
【注】(1)参考自spring的org.springframework.web\src\main\java\org\springframework\web\context\ContextLoader.java
(2)其中,
WebApplicationContext代表整个方法的返回类型
2、BeanUtils使用
类:Student
String name;int age; boolean sex;Address addr;添加get和set方法
________________________________
Student student = new Student();
BeanUtils.setProperties(student,"name","zhangsan");
BeanUtils.setProperties(student,"age","20");
BeanUtils.setProperties(student,"sex",true);
BeanUtils.setProperties(student,"addr.code","123456");
System.out.println(student);
System.out.println(BeanUtils.getProperties(student,"name");
System.out.println(BeanUtils.getProperties(student,"age");
System.out.println(BeanUtils.getProperties(student,"sex");
System.out.println(BeanUtils.getProperties(student,"addr.code");
3、获取当前文件的绝对路径
System.out.println(System.getProperty("user.dir"));
运行结果:D:\codes\sourcecodes\panama\panama.citest,得到工程的根目录
- File directory = new File("");//设定为当前文件夹
- try{
- System.out.println(directory.getCanonicalPath());//获取标准的路径
- System.out.println(directory.getAbsolutePath());//获取绝对路径
- }catch(Exception e){}
运行结果:
D:\codes\sourcecodes\panama\panama.citest
D:\codes\sourcecodes\panama\panama.citest
4、获取路径的方法
如何获得当前文件路径
常用:
(1).Test.class.getResource("")
得到的是当前类FileTest.class文件的URI目录。不包括自己!
(2).Test.class.getResource("/")
得到的是当前的classpath的绝对URI路径。
(3).Thread.currentThread().getContextClassLoader().getResource("")
得到的也是当前ClassPath的绝对URI路径。
(4).Test.class.getClassLoader().getResource("")
得到的也是当前ClassPath的绝对URI路径。
(5).ClassLoader.getSystemResource("")
得到的也是当前ClassPath的绝对URI路径。
尽量不要使用相对于System.getProperty("user.dir")当前用户目录的相对路径,后面可以看出得出结果五花八门。
(6) new File("").getAbsolutePath()也可用。
常用:
(1).Test.class.getResource("")
得到的是当前类FileTest.class文件的URI目录。不包括自己!
(2).Test.class.getResource("/")
得到的是当前的classpath的绝对URI路径。
(3).Thread.currentThread().getContextClassLoader().getResource("")
得到的也是当前ClassPath的绝对URI路径。
(4).Test.class.getClassLoader().getResource("")
得到的也是当前ClassPath的绝对URI路径。
(5).ClassLoader.getSystemResource("")
得到的也是当前ClassPath的绝对URI路径。
尽量不要使用相对于System.getProperty("user.dir")当前用户目录的相对路径,后面可以看出得出结果五花八门。
(6) new File("").getAbsolutePath()也可用。
5、运行时指定jvm参数
java -Xms10m -Xmx10m -Xmn5m com.alibaba.memory.TestGC
6、取得java文件的路径
- private static File getFileAbsolutePath(String filename) {
- String basePath = new File("").getAbsolutePath();
- String filePath = "src/test/java";
- String packagePath = "com/alibaba/panama/qdox";
- return new File(basePath, File.separator + filePath + File.separator + packagePath
- + File.separator + filename);
- }
7、文件路径切割
8、隐藏文件处理
- /**
- * 取得某目录下面的文件,增加过滤功能,例如:去掉.svn隐藏文件
- *
- * @param dir
- * @return
- */
- public static List<File> getSubFiles(File dir, String filter) {
- if (dir == null || "".equals(dir))
- return null;
- CopyOnWriteArrayList<File> subFiles = new CopyOnWriteArrayList<File>();
- for (File file : getAllSubFiles(dir)) {
- subFiles.add(file);
- }
- for (File file : subFiles) {
- String tmp = file.toString();
- String[] subBlocks = tmp.split("\\\\");
- for (String subBlock : subBlocks) {
- if (subBlock.startsWith(filter)) {
- subFiles.remove(file);
- break;
- }
- }
- }
- return subFiles;
- }
- /**
- * 取得目录下面的所有文件,包含隐藏文件
- *
- * @param dir
- * @return
- */
- public static List<File> getAllSubFiles(File dir) {
- if (dir == null || "".equals(dir))
- return null;
- if (dir.isDirectory()) {
- File[] subFiles = dir.listFiles();
- for (File file : subFiles) {
- if (file.isDirectory()) {
- getAllSubFiles(new File(dir + File.separator + file.getName()));
- } else {
- allSubFiles.add(file);
- }
- }
- } else {
- allSubFiles.add(dir);
- }
- return allSubFiles;
- }
9、Java执行中设置环境变量
环境变量设置方式一般有3种:
方式1:我的电脑-》属性-》高级-》环境变量中找到classpath
方式2:命令行执行:set classpath=.;d:\myapp\mylib
方式3:
java -cp .;d:\mypro\mylib MyClassLoader
【注意】-cp或-classpath均可,具体可查看java命令查看常用参数的使用。
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A ; separated list of directories, JAR archives,
and ZIP archives to search for class files.
10、加载器的加载内容
bootstrap加载器:加载java核心库中的内容,例如java.lang.*
extended加载器:加载ext目录下面的内容
app加载器:加载classpath下面的内容,
一般包含"."表示当前目录
自定义加载器:加载自己制定目录下面的内容
11、文件名过滤
过滤掉工程目录下以文件名以“.”开头的文件,留下不是以'.'开头的文件或文件夹
- File file = new File(System.getProperty("user.dir"));
- FilenameFilter filter = new FilenameFilter() {
- @Override
- public boolean accept(File dir, String name) {
- return !name.startsWith(".");
- }
- };
- for (String filename : file.list(filter)) {
- System.out.println(filename);
- }
12、流
FileInputStream和FileOutputStream
节点流,用于从文件中读取或往文件中写入字节流。如果在构造FileOutputStream时,文件已经存在,则覆盖这个文件。针对字节(byte)进行操作,常用的方式为:
读入:【注意】将new String(b,off,len)将字节数组转换为字符串
- FileInputStream fis = new FileInputStream("1.txt");
- byte[] b = new byte[100];
- int len = fis.read(b);
- System.out.println(new String(b,0, len));
- fis.close();
写出:【注意】
String.getBytes()的使用将字符串转换为字节数组
- FileOutputStream fos = new FileOutputStream("1.txt");
- fos.write("hello alibaba".getBytes());
- fos.close();
BufferedInputStream和BufferedOutputStream
过滤流,需要使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率。没有增加额外的读写功能。
DataInputStream和DataOutputStream
过滤流,需要使用已经存在的节点流来构造,提供了读写Java中的基本数据类型的功能。增强了八种基本类型的读写,读取的时候需要知道写入时的顺序,否则读取的内容出错。
PipedInputStream和PipedOutputStream
管道流,用于线程间的通信。一个线程的PipedInputStream对象从另一个线程的PipedOutputStream对象读取输入。要使管道流有用,必须同时构造管道输入流和管道输出流。
- import java.io.*;
- class PipedStreamTest
- {
- public static void main(String[] args)
- {
- PipedOutputStream pos=new PipedOutputStream();
- PipedInputStream pis=new PipedInputStream();
- try
- {
- pos.connect(pis);
- new Producer(pos).start();
- new Consumer(pis).start();
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- }
- }
- class Producer extends Thread
- {
- private PipedOutputStream pos;
- public Producer(PipedOutputStream pos)
- {
- this.pos=pos;
- }
- public void run()
- {
- try
- {
- pos.write("Hello,welcome you!".getBytes());
- pos.close();
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- }
- }
- class Consumer extends Thread
- {
- private PipedInputStream pis;
- public Consumer(PipedInputStream pis)
- {
- this.pis=pis;
- }
- public void run()
- {
- try
- {
- byte[] buf=new byte[100];
- int len=pis.read(buf);
- System.out.println(new String(buf,0,len));
- pis.close();
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- }
- }
13、字节流、字符流的转换
- FileOutputStream fos = new FileOutputStream("1.txt");
- OutputStreamWriter osw = new OutputStreamWriter(fos);
- BufferedWriter bw = new BufferedWriter(osw);
- bw.write("hi, alibaba");
- bw.close();
- FileInputStream fis = new FileInputStream("1.txt");
- InputStreamReader isr = new InputStreamReader(fis);
- BufferedReader br = new BufferedReader(isr);
- String line = br.readLine();
- System.out.println(line);
14、FileLock
- String filename = Sample01.class.getResource("/demo.txt").getFile();
- FileOutputStream outputStream = new FileOutputStream(filename);
- FileChannel channel = outputStream.getChannel();
- FileLock fileLock = channel.tryLock();
- if (fileLock != null) {
- Thread.sleep(20000);
- System.out.println("file lock release");
- }
- if (fileLock != null) {
- fileLock.release();
- }
- channel.close();
- outputStream.close();
【注意】
FileLock不能对只读Channel上锁。
将 FileInputStream fis = new FileInputStream(file);改为RandomAccessFile raf = new RandomAccessFile(file, "rw");
从RandomAccessFile获得通道就可以了。
本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/591809,如需转载请自行联系原作者