亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

JDK1.7 之java.nio.file.Files 讀取文件僅需一行代碼實現

2024-07-13 10:13:38
字體:
來源:轉載
供稿:網友

JDK1.7中引入了新的文件操作類java.nio.file這個包,其中有個Files類它包含了很多有用的方法來操作文件,比如檢查文件是否為隱藏文件,或者是檢查文件是否為只讀文件。開發者還可以使用Files.readAllBytes(Path)方法把整個文件讀入內存,此方法返回一個字節數組,還可以把結果傳遞給String的構造器,以便創建字符串輸出。此方法確保了當讀入文件的所有字節內容時,無論是否出現IO異常或其它的未檢查異常,資源都會關閉。這意味著在讀文件到最后的塊內容后,無需關閉文件。要注意,此方法不適合讀取很大的文件,因為可能存在內存空間不足的問題。開發者還應該明確規定文件的字符編碼,以避免任異?;蚪馕鲥e誤。

readAllBytes(Path)方法的源碼:

<span style="font-size:32px;"> </span><span style="font-size:18px;">/**  * Reads all the bytes from a file. The method ensures that the file is  * closed when all bytes have been read or an I/O error, or other runtime  * exception, is thrown.  * 注意該方法只適用于簡單的情況,這種簡單的情況能夠很方便地將所有的字節讀進一個字節數組,但并不適合用來讀取大文件  * <p> Note that this method is intended for simple cases where it is  * convenient to read all bytes into a byte array. It is not intended for  * reading in large files.  *  * @param  path  *     the path to the file  *  * @return a byte array containing the bytes read from the file  *  * @throws IOException  *     if an I/O error occurs reading from the stream  *     如果大于文件2G,將拋出內存溢出異常  * @throws OutOfMemoryError  *     if an array of the required size cannot be allocated, for  *     example the file is larger that {@code 2GB}  * @throws SecurityException  *     In the case of the default provider, and a security manager is  *     installed, the {@link SecurityManager#checkRead(String) checkRead}  *     method is invoked to check read access to the file.  */</span><span style="font-size:18px;">   public static byte[] readAllBytes(Path path) throws IOException {     try (SeekableByteChannel sbc = Files.newByteChannel(path);        InputStream in = Channels.newInputStream(sbc)) {//JDK1.7 try-with-resource       long size = sbc.size();       if (size > (long)MAX_BUFFER_SIZE)         throw new OutOfMemoryError("Required array size too large");        return read(in, (int)size);     }   }</span> 

讀取文件只要一行

package entryNIO;  import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths;  public class BufferAndChannel {   public static void main(String[] args) {     try {         System.out.println(          new String(Files.readAllBytes(Paths.get("C://FileChannelImpl.java")))         );            } catch (IOException e) {       e.printStackTrace();     }   } } 

readAllLines方法的源碼

public static List<String> readAllLines(Path path, Charset cs) throws IOException {     try (BufferedReader reader = newBufferedReader(path, cs)) {       List<String> result = new ArrayList<>();       for (;;) {         String line = reader.readLine();         if (line == null)           break;         result.add(line);       }       return result;     }   } 
package entryNIO;  import java.util.List; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths;  public class BufferAndChannel {   public static void main(String[] args) {     //如果是文本文件也可以這么讀 調用readAllLines 方法     try {<span style="white-space:pre">               </span>//JDK1.8以后可以省略第二個參數,默認是UTF-8編碼       List<String> lines = Files.readAllLines(Paths.get("C://FileChannelImpl.java"), StandardCharsets.UTF_8);       StringBuilder sb = new StringBuilder();       for (String line : lines) {         sb.append(line+"/n");// /r/n 換行符       }       String fromFile = sb.toString();       System.out.println(fromFile);      } catch (IOException e) {       e.printStackTrace();     }   } } 

使用Java8 流的方式:

先看源碼實現

public static Stream<String> lines(Path path) throws IOException {     return lines(path, StandardCharsets.UTF_8);   } 
package entryNIO;  import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths;  public class BufferAndChannel {   public static void main(String[] args) {     //Java8 新增lines方法     try {        // Java8用流的方式讀文件,更加高效        Files.lines(Paths.get(<span style="font-family: Arial, Helvetica, sans-serif;">"C://FileChannelImpl.java"</span>)).forEach(System.out::println);      } catch (IOException e) {       e.printStackTrace();     }   } } 

讀文件一行寫文件也只需要一行

package entryNIO;  import java.util.Arrays; import java.util.List; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; public class BufferAndChannel {   public static void main(String[] args){     //Java8 新增lines方法     String filePath="C://FileChannelImpl.java";     try {        // Java8用流的方式讀文件,更加高效        /*Files.lines(Paths.get(filePath)).forEach((line)->{           try {             Files.write(Paths.get("//1.java"), line.getBytes(), StandardOpenOption.APPEND);             //Files.copy(in, target, options);           } catch (IOException e) {             e.printStackTrace();           }                }); */              /* Files.readAllLines(Path path)方法返回值為List<String>類型,就是為Files.write()而設計的        * 因為Files.write()需要傳入一個Iterable<? extends CharSequence>類型的參數        *        * Files.write(Path path, Iterable<? extends CharSequence> lines, OpenOption... options)        */       List<String> stringStream=Files.readAllLines(Paths.get(filePath));       //因為Files.lines(Path path)返回的是Stream<String>,所以可以通過下面這種方法變成List<String>       //List<String> stringStream2=Arrays.asList((String[])Files.lines(Paths.get(filePath)).toArray());              //StandardOpenOption為枚舉類 ,如果當前所Paths.get()的文件不存在,第三個參數可選擇StandardOpenOption.CREATE_NEW       //文件存在則拋java.nio.file.FileAlreadyExistsException異常       Files.write(Paths.get("C://2.java"), stringStream, StandardOpenOption.CREATE_NEW);              } catch (IOException e) {       e.printStackTrace();     }   } } 

以上這篇JDK1.7 之java.nio.file.Files 讀取文件僅需一行代碼實現就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一区二区三区图| 国产精品亚洲美女av网站| 欧美裸体男粗大视频在线观看| 国模私拍视频一区| 久久久免费精品视频| 影音先锋日韩有码| 亚洲成色777777在线观看影院| 欧美乱大交做爰xxxⅹ性3| 日韩免费在线电影| 国产精品偷伦免费视频观看的| 国产精品av网站| 日韩精品极品视频免费观看| 亚洲精品aⅴ中文字幕乱码| 91九色蝌蚪国产| 亚洲二区中文字幕| 欧美精品久久久久久久久久| 欧美日韩国产丝袜另类| 欧美极品少妇xxxxⅹ裸体艺术| 欧美中文字幕在线播放| 久久久久久久久久久成人| 欧美成人免费在线观看| 国产精品视频区1| 亚洲人成在线观| 国产偷国产偷亚洲清高网站| 久久噜噜噜精品国产亚洲综合| 欧美国产亚洲精品久久久8v| 色av中文字幕一区| 91网站免费观看| 国产精品高潮呻吟久久av野狼| 97视频在线观看播放| 91亚洲精品久久久久久久久久久久| 午夜精品理论片| 亚洲黄色av女优在线观看| 日韩成人在线免费观看| 欧美亚洲日本黄色| 久久久久国产精品免费| 成人精品一区二区三区电影免费| 亚洲欧美精品suv| 色综合色综合久久综合频道88| 欧美韩国理论所午夜片917电影| 欧美成人h版在线观看| 丝袜美腿精品国产二区| 91超碰caoporn97人人| 裸体女人亚洲精品一区| 国产国语videosex另类| 菠萝蜜影院一区二区免费| 久久av红桃一区二区小说| 国产色综合天天综合网| 91精品久久久久久久久久久久久| 一区二区av在线| 国产亚洲欧美日韩精品| 精品亚洲国产视频| 久久精品国产欧美亚洲人人爽| 51视频国产精品一区二区| 91精品久久久久久久久久| 成人中文字幕在线观看| 国产精品丝袜久久久久久高清| 4438全国亚洲精品在线观看视频| 欧美午夜无遮挡| 亚洲欧美综合v| 亚洲欧美在线磁力| 国产欧美在线观看| 性欧美视频videos6一9| 91地址最新发布| 2019中文字幕免费视频| 国产一区二区三区视频| 91精品成人久久| 国产精品福利观看| 色爱精品视频一区| 亚洲人成在线播放| 国产精品7m视频| 亚洲色图15p| 国产精品大片wwwwww| 亚洲精品福利视频| 国产欧美久久久久久| 欧美理论电影在线观看| 精品国产一区二区三区久久久| 97视频在线观看亚洲| 成人精品在线观看| 亚洲高清久久网| 国产丝袜一区视频在线观看| 91免费视频国产| 欧美夜福利tv在线| 欧美人与物videos| 亚洲欧美国产一本综合首页| 国产精品久久久久久久久久久久久久| 91精品一区二区| 美女久久久久久久久久久| 欧美成人亚洲成人| 亚洲欧美日韩在线一区| 91在线中文字幕| 国产精品男人爽免费视频1| 欧美在线视频观看免费网站| 91精品啪aⅴ在线观看国产| 欧美日韩国产精品一区二区不卡中文| 成人免费淫片视频软件| 亚洲精品久久久久中文字幕欢迎你| 国产精品黄色影片导航在线观看| 亚洲一区二区三区sesese| 国产精品电影一区| 亚洲成人av片在线观看| 九九热视频这里只有精品| 久久99精品久久久久久青青91| 亚洲欧美激情精品一区二区| 久久久久久尹人网香蕉| 国产精品免费福利| 亚洲成人网av| 91国产中文字幕| 日本成人免费在线| 国产精品亚洲片夜色在线| 亚洲午夜未满十八勿入免费观看全集| 国产日韩欧美中文在线播放| 91在线观看免费高清完整版在线观看| 亚洲a中文字幕| 亚洲精品美女免费| 欧洲一区二区视频| 欧美另类极品videosbest最新版本| 欧美亚洲国产成人精品| 亚洲女人被黑人巨大进入| 日本精品一区二区三区在线| 欧美最顶级丰满的aⅴ艳星| 九九热这里只有精品免费看| 精品国产一区二区三区久久狼黑人| 亚洲老司机av| 国产精品男人爽免费视频1| 国产日韩欧美日韩| 欧美日韩国产专区| 91精品国产高清久久久久久91| 成人精品久久av网站| 精品露脸国产偷人在视频| 91精品国产色综合久久不卡98口| 成人国产精品一区| 亚洲欧美日韩图片| 91精品国产高清自在线看超| 成人黄色av网| 97香蕉超级碰碰久久免费的优势| 亚洲三级黄色在线观看| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲激情电影中文字幕| 在线精品国产成人综合| 成人写真福利网| 亚洲qvod图片区电影| 国产精品久久久久高潮| 欧美高清激情视频| 亚洲免费小视频| 国产精品久久久久久久av大片| 成人国产精品免费视频| 中文字幕亚洲欧美日韩在线不卡| 国产精品第3页| 欧美成人久久久| 亚洲免费视频网站| 国产欧美一区二区三区视频| 国产亚洲福利一区| www.xxxx欧美| 插插插亚洲综合网| 日韩中文字幕网| 欧美精品成人91久久久久久久| 日韩有码在线电影| 国产精品自拍偷拍| 亚洲自拍偷拍色片视频| 久久久国产精彩视频美女艺术照福利| 精品亚洲va在线va天堂资源站| 久久久之久亚州精品露出| 亚洲精品美女免费|