• Java基础之写文件——在通道写入过程中的缓冲区状态(BufferStateTrace)


    控制台程序,在Junk目录中将字符串“Garbage in, garbage out ”写入到名为charData.txt的文件中。

     1 import static java.nio.file.StandardOpenOption.*;
     2 import java.nio.file.*;
     3 import java.nio.channels.*;
     4 
     5 import java.util.EnumSet;
     6 import java.io.IOException;
     7 import java.nio.ByteBuffer;
     8 
     9 public class BufferStateTrace {
    10   public static void main(String[] args) {
    11     String phrase = "Garbage in, garbage out.
    ";
    12 
    13     Path file = Paths.get(System.getProperty("user.home")).resolve("Beginning Java Struff").resolve("charData.txt"); // Path object for the file
    14     try {
    15       Files.createDirectories(file.getParent());                       // Make sure we have the directory
    16     } catch (IOException e) {
    17       e.printStackTrace();
    18       System.exit(1);
    19     }
    20 
    21     try (WritableByteChannel channel = Files.newByteChannel(file, EnumSet.of(WRITE, CREATE, APPEND))) {
    22       ByteBuffer buf = ByteBuffer.allocate(1024);
    23       System.out.printf(
    24         "
    New buffer:           position = %1$2d   Limit = %2$4d   capacity = %3$4d",
    25                         buf.position(), buf.limit(), buf.capacity());
    26       // Load the data into the buffer
    27       for(char ch : phrase.toCharArray())
    28         buf.putChar(ch);
    29       System.out.printf(
    30         "
    Buffer after loading: position = %1$2d   Limit = %2$4d   capacity = %3$4d",
    31                         buf.position(), buf.limit(), buf.capacity());
    32       buf.flip();                                                      // Flip the buffer ready for file write
    33       System.out.printf(
    34         "
    Buffer after flip:    position = %1$2d   Limit = %2$4d   capacity = %3$4d",
    35                         buf.position(), buf.limit(), buf.capacity());
    36       channel.write(buf);                                              // Write the buffer to the file channel
    37 
    38 // Uncomment the following to get the size of the file in the output
    39 //      System.out.println("
    The file contains " + ((FileChannel)channel).size() + " bytes.");
    40 
    41       buf.flip();
    42       channel.write(buf);                // Write the buffer again to the file channel
    43       System.out.println("
    Buffer contents written to the file.");
    44     } catch (IOException e) {
    45       e.printStackTrace();
    46     }
    47   }
    48 }
  • 相关阅读:
    封装ajax---基于axios
    XHR的理解和作用
    params和 query区别
    HTTP请求交互的基本过程
    http3次握手
    ES6----import * as 用法
    微信小程序真机调试:Setting data field "XXX" to undefined is invalid
    webpack详解-----optimization
    node跨域
    shell 的 功能语句--1
  • 原文地址:https://www.cnblogs.com/mannixiang/p/3386722.html
Copyright © 2020-2023  润新知