<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## [文件讀寫](https://lingcoder.gitee.io/onjava8/#/book/17-Files?id=%e6%96%87%e4%bb%b6%e8%af%bb%e5%86%99) 此時,我們可以對路徑和目錄做任何事情。 現在讓我們看一下操縱文件本身的內容。 如果一個文件很“小”,也就是說“它運行得足夠快且占用內存小”,那么`java.nio.file.Files`類中的實用程序將幫助你輕松讀寫文本和二進制文件。 `Files.readAllLines()`一次讀取整個文件(因此,“小”文件很有必要),產生一個`List<String>`。 對于示例文件,我們將重用`streams/Cheese.dat`: ~~~ // files/ListOfLines.java import java.util.*; import java.nio.file.*; public class ListOfLines { public static void main(String[] args) throws Exception { Files.readAllLines( Paths.get("../streams/Cheese.dat")) .stream() .filter(line -> !line.startsWith("//")) .map(line -> line.substring(0, line.length()/2)) .forEach(System.out::println); } } /* Output: Not much of a cheese Finest in the And what leads you Well, it's It's certainly uncon */ ~~~ 跳過注釋行,其余的內容每行只打印一半。 這實現起來很簡單:你只需將`Path`傳遞給`readAllLines()`(以前的 java 實現這個功能很復雜)。`readAllLines()`有一個重載版本,包含一個`Charset`參數來存儲文件的 Unicode 編碼。 `Files.write()`被重載以寫入`byte`數組或任何`Iterable`對象(它也有`Charset`選項): ~~~ // files/Writing.java import java.util.*; import java.nio.file.*; public class Writing { static Random rand = new Random(47); static final int SIZE = 1000; public static void main(String[] args) throws Exception { // Write bytes to a file: byte[] bytes = new byte[SIZE]; rand.nextBytes(bytes); Files.write(Paths.get("bytes.dat"), bytes); System.out.println("bytes.dat: " + Files.size(Paths.get("bytes.dat"))); // Write an iterable to a file: List<String> lines = Files.readAllLines( Paths.get("../streams/Cheese.dat")); Files.write(Paths.get("Cheese.txt"), lines); System.out.println("Cheese.txt: " + Files.size(Paths.get("Cheese.txt"))); } } /* Output: bytes.dat: 1000 Cheese.txt: 199 */ ~~~ 我們使用`Random`來創建一個隨機的`byte`數組; 你可以看到生成的文件大小是 1000。 一個`List`被寫入文件,任何`Iterable`對象也可以這么做。 如果文件大小有問題怎么辦? 比如說: 1. 文件太大,如果你一次性讀完整個文件,你可能會耗盡內存。 2. 您只需要在文件的中途工作以獲得所需的結果,因此讀取整個文件會浪費時間。 `Files.lines()`方便地將文件轉換為行的`Stream`: ~~~ // files/ReadLineStream.java import java.nio.file.*; public class ReadLineStream { public static void main(String[] args) throws Exception { Files.lines(Paths.get("PathInfo.java")) .skip(13) .findFirst() .ifPresent(System.out::println); } } /* Output: show("RegularFile", Files.isRegularFile(p)); */ ~~~ 這對本章中第一個示例代碼做了流式處理,跳過 13 行,然后選擇下一行并將其打印出來。 `Files.lines()`對于把文件處理行的傳入流時非常有用,但是如果你想在`Stream`中讀取,處理或寫入怎么辦?這就需要稍微復雜的代碼: ~~~ // files/StreamInAndOut.java import java.io.*; import java.nio.file.*; import java.util.stream.*; public class StreamInAndOut { public static void main(String[] args) { try( Stream<String> input = Files.lines(Paths.get("StreamInAndOut.java")); PrintWriter output = new PrintWriter("StreamInAndOut.txt") ) { input.map(String::toUpperCase) .forEachOrdered(output::println); } catch(Exception e) { throw new RuntimeException(e); } } } ~~~ 因為我們在同一個塊中執行所有操作,所以這兩個文件都可以在相同的 try-with-resources 語句中打開。`PrintWriter`是一個舊式的`java.io`類,允許你“打印”到一個文件,所以它是這個應用的理想選擇。如果你看一下`StreamInAndOut.txt`,你會發現它里面的內容確實是大寫的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看