### ä¸ãå符ä¸åè å¨Java䏿è¾å ¥ãè¾åºä¸¤ç§IOæµï¼æ¯ç§è¾å ¥ãè¾åºæµåå为åèæµåå符æµä¸¤å¤§ç±»ãå ³äºåèï¼æä»¬å¨å¦ä¹ 8å¤§åºæ¬æ°æ®ç±»åä¸é½æäºè§£ï¼æ¯ä¸ªåè\(byte\)æ8bitç»æï¼æ¯ç§æ°æ®ç±»ååå 个åèç»æçãå ³äºåç¬¦ï¼æä»¬å¯è½ç¥é代表ä¸ä¸ªæ±åæè è±æåæ¯ã **使¯åèä¸å符ä¹é´çå ³ç³»æ¯ææ ·çï¼** Javaéç¨unicodeç¼ç ï¼2个åèæ¥è¡¨ç¤ºä¸ä¸ªå符ï¼è¿ç¹ä¸Cè¯è¨ä¸ä¸åï¼Cè¯è¨ä¸éç¨ASCIIï¼å¨å¤§å¤æ°ç³»ç»ä¸ï¼ä¸ä¸ªå符é常å 1个åèï¼ä½æ¯å¨0~127æ´æ°ä¹é´çå符æ å°ï¼unicodeåä¸å ¼å®¹ASCIIãèJavaéç¨unicodeæ¥è¡¨ç¤ºå符ï¼ä¸ä¸ªä¸ææè±æå符çunicodeç¼ç é½å 2个åèãä½å¦æéç¨å ¶ä»ç¼ç æ¹å¼ï¼ä¸ä¸ªå符å ç¨çåèæ°ååä¸ç¸åãå¯è½æç¹æï¼ä¸¾ä¸ªä¾åè§£éä¸ã ä¾å¦ï¼Javaä¸çStringç±»æ¯æç §unicodeè¿è¡ç¼ç çï¼å½ä½¿ç¨String\(byte\[\] bytes, String encoding\)æé å符串æ¶ï¼encodingææçæ¯bytesä¸çæ°æ®æ¯æç §é£ç§æ¹å¼ç¼ç çï¼è䏿¯æå产ççStringæ¯ä»ä¹ç¼ç æ¹å¼ï¼æ¢å¥è¯è¯´ï¼æ¯è®©ç³»ç»æbytesä¸çæ°æ®ç±encodingç¼ç æ¹å¼è½¬æ¢æunicodeç¼ç ã妿䏿æï¼bytesçç¼ç æ¹å¼å°ç±jdkæ ¹æ®æä½ç³»ç»å³å®ã `getBytes(String charsetName)`ä½¿ç¨æå®çç¼ç æ¹å¼å°æ¤Stringç¼ç 为 byte åºåï¼å¹¶å°ç»æåå¨å°ä¸ä¸ªæ°ç byte æ°ç»ä¸ã妿䏿å®å°ä½¿ç¨æä½ç³»ç»é»è®¤çç¼ç æ¹å¼ï¼æççµèé»è®¤çæ¯GBKç¼ç ã ```java public class Hel { public static void main(String[] args){ String str = "ä½ å¥½hello"; int byte_len = str.getBytes().length; int len = str.length(); System.out.println("åèé¿åº¦ä¸ºï¼" + byte_len); System.out.println("å符é¿åº¦ä¸ºï¼" + len); System.out.println("ç³»ç»é»è®¤ç¼ç æ¹å¼ï¼" + System.getProperty("file.encoding")); } } ``` è¾åºç»æ > åèé¿åº¦ä¸ºï¼9 > å符é¿åº¦ä¸ºï¼7 > ç³»ç»é»è®¤ç¼ç æ¹å¼ï¼GBK è¿æ¯å 为ï¼å¨ GB 2312 ç¼ç æ GBK ç¼ç ä¸ï¼ä¸ä¸ªè±æåæ¯å符åå¨éè¦1个åèï¼ä¸ä¸ªæ±åå符åå¨éè¦2个åèã å¨UTF-8ç¼ç ä¸ï¼ä¸ä¸ªè±æåæ¯å符åå¨éè¦1个åèï¼ä¸ä¸ªæ±åå符å¨åéè¦3å°4个åèãå¨UTF-16ç¼ç ä¸ï¼ä¸ä¸ªè±æåæ¯å符åå¨éè¦2个åèï¼ä¸ä¸ªæ±åå符å¨åéè¦3å°4个åèï¼Unicodeæ©å±åºçä¸äºæ±ååå¨éè¦4个åèï¼ãå¨UTF-32ç¼ç ä¸ï¼ä¸çä¸ä»»ä½å符çåå¨é½éè¦4个åèã **ç®åæ¥è®²ï¼ä¸ä¸ªå符表示ä¸ä¸ªæ±åæè±æåæ¯ï¼å ·ä½å符ä¸åèä¹é´ç大尿¯ä¾è§ç¼ç æ åµèå®ãææ¶å读åçæ°æ®æ¯ä¹±ç ï¼å°±æ¯å 为ç¼ç æ¹å¼ä¸ä¸è´ï¼éè¦è¿è¡è½¬æ¢ï¼ç¶ååæç §unicodeè¿è¡ç¼ç ã** ### äºãFileç±» Fileç±»æ¯java.ioå ä¸ä»£è¡¨ä¸å¹³å°æ å ³çæä»¶åç®å½ï¼ä¹å°±æ¯è¯´ï¼å¦æå¸æå¨ç¨åºä¸æä½**æä»¶åç®å½**ï¼é½å¯ä»¥éè¿Fileç±»æ¥å®æã ##### â æé 彿° ```java //æé 彿°File(String pathname) File f1 =new File("c:\\abc\\1.txt"); //File(String parent,String child) File f2 =new File("c:\\abc","2.txt"); //File(File parent,String child) File f3 =new File("c:"+File.separator+"abc");//separator 跨平å°åé符 File f4 =new File(f3,"3.txt"); System.out.println(f1);//c:\abc\1.txt ``` **è·¯å¾åé符ï¼** windowsï¼ "/" "\" é½å¯ä»¥ linux/unixï¼ "/" 注æ:妿windowséæ©ç¨"\"ååå²ç¬¦çè¯,é£ä¹è¯·è®°å¾æ¿æ¢æ"\\",å 为Javaä¸"\"代表转ä¹å符 æä»¥æ¨èé½ä½¿ç¨"/"ï¼ä¹å¯ä»¥ç´æ¥ä½¿ç¨ä»£ç `File.separator`ï¼è¡¨ç¤ºè·¨å¹³å°åé符ã **è·¯å¾ï¼** ç¸å¯¹è·¯å¾ï¼ ./表示å½åè·¯å¾ ../表示ä¸ä¸çº§è·¯å¾ å ¶ä¸å½åè·¯å¾ï¼é»è®¤æ åµä¸ï¼java.io å ä¸çç±»æ»æ¯æ ¹æ®å½åç¨æ·ç®å½æ¥åæç¸å¯¹è·¯å¾åãæ¤ç®å½ç±ç³»ç»å±æ§ user.dir æå®ï¼éå¸¸æ¯ Java èææºçè°ç¨ç®å½ãâ ç»å¯¹è·¯å¾ï¼ ç»å¯¹è·¯å¾åæ¯å®æ´çè·¯å¾åï¼ä¸éè¦ä»»ä½å ¶ä»ä¿¡æ¯å°±å¯ä»¥å®ä½èªèº«è¡¨ç¤ºçæä»¶ ##### â¡å建ä¸å 餿¹æ³ ```java //妿æä»¶åå¨è¿åfalseï¼å¦åè¿åtrueå¹¶ä¸å建æä»¶ boolean createNewFile(); //å建ä¸ä¸ªFile对象æå¯¹åºçç®å½ï¼æåè¿åtrueï¼å¦åfalseãä¸Fileå¯¹è±¡å¿ é¡»ä¸ºè·¯å¾è䏿¯æä»¶ãåªä¼å建æåä¸çº§ç®å½ï¼å¦æä¸çº§ç®å½ä¸åå¨å°±æå¼å¸¸ã boolean mkdir(); //å建ä¸ä¸ªFile对象æå¯¹åºçç®å½ï¼æåè¿åtrueï¼å¦åfalseãä¸Fileå¯¹è±¡å¿ é¡»ä¸ºè·¯å¾è䏿¯æä»¶ãå建å¤çº§ç®å½ï¼å建路å¾ä¸ææä¸åå¨çç®å½ boolean mkdirs() ; //妿æä»¶åå¨è¿åtrueå¹¶ä¸å 餿件ï¼å¦åè¿åfalse boolean delete(); //å¨èææºç»æ¢æ¶ï¼å é¤File对象æè¡¨ç¤ºçæä»¶æç®å½ã void deleteOnExit(); ``` ##### â¢å¤ææ¹æ³ ```java boolean canExecute() ;//夿æä»¶æ¯å¦å¯æ§è¡ boolean canRead();//夿æä»¶æ¯å¦å¯è¯» boolean canWrite();//夿æä»¶æ¯å¦å¯å boolean exists();//夿æä»¶æ¯å¦åå¨ boolean isDirectory();//夿æ¯å¦æ¯ç®å½ boolean isFile();//夿æ¯å¦æ¯æä»¶ boolean isHidden();//夿æ¯å¦æ¯éèæä»¶æéèç®å½ boolean isAbsolute();//夿æ¯å¦æ¯ç»å¯¹è·¯å¾ æä»¶ä¸åå¨ä¹è½å¤æ ``` ##### â¢è·åæ¹æ³ ```java String getName();//è¿åæä»¶æè æ¯ç®å½çåç§° String getPath();//è¿åè·¯å¾ String getAbsolutePath();//è¿åç»å¯¹è·¯å¾ String getParent();//è¿åç¶ç®å½ï¼å¦ææ²¡æç¶ç®å½åè¿ånull long lastModified();//è¿åæå䏿¬¡ä¿®æ¹çæ¶é´ long length();//è¿åæä»¶çé¿åº¦ File[] listRoots();// ååºææçæ ¹ç®å½ï¼Windowä¸å°±æ¯ææç³»ç»ççç¬¦ï¼ String[] list() ;//è¿åä¸ä¸ªå符串æ°ç»ï¼ç»å®è·¯å¾ä¸çæä»¶æç®å½åç§°å符串 String[] list(FilenameFilter filter);//è¿åæ»¡è¶³è¿æ»¤å¨è¦æ±çä¸ä¸ªå符串æ°ç» File[] listFiles();//è¿åä¸ä¸ªæä»¶å¯¹è±¡æ°ç»ï¼ç»å®è·¯å¾ä¸æä»¶æç®å½ File[] listFiles(FilenameFilter filter);//è¿åæ»¡è¶³è¿æ»¤å¨è¦æ±çä¸ä¸ªæä»¶å¯¹è±¡æ°ç» ``` å ¶ä¸å å«äºä¸ä¸ªéè¦çæ¥å£FileNameFilterï¼è¯¥æ¥å£æ¯ä¸ªæä»¶è¿æ»¤å¨ï¼å å«äºä¸ä¸ª`accept(File dir,String name)`æ¹æ³ï¼è¯¥æ¹æ³ä¾æ¬¡å¯¹æå®Fileçææåç®å½æè æä»¶è¿è¡è¿ä»£ï¼æç §æå®æ¡ä»¶ï¼è¿è¡è¿æ»¤ï¼è¿æ»¤åºæ»¡è¶³æ¡ä»¶çæææä»¶ã ```java // æä»¶è¿æ»¤ File[] files = file.listFiles(new FilenameFilter() { @Override public boolean accept(File file, String filename) { return filename.endsWith(".mp3"); } }); ``` fileç®å½ä¸çææåæä»¶å¦ææ»¡è¶³åç¼æ¯.mp3çæ¡ä»¶çæä»¶é½ä¼è¢«è¿æ»¤åºæ¥ã