zoukankan      html  css  js  c++  java
  • nio读取文件,输出文件

    io流的一种:

    package com.cxy.ssp.Automic;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.nio.ByteBuffer;
    import java.nio.channels.FileChannel;
    import java.util.concurrent.CyclicBarrier;
    import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
    import java.util.concurrent.atomic.AtomicStampedReference;
    //通过nio实现文件io
    public class Demo3 {
        public static void main(String[] args) throws Exception{
            //1 创建输出流
            FileOutputStream fileOutputStream = new FileOutputStream("bas.txt");

        //构建通道 FileChannel channel
    = fileOutputStream.getChannel();
         //创建缓存区 ByteBuffer buffer
    = ByteBuffer.allocate(1024);      // String str ="hello world";
        //将数据放入缓冲区 buffer.put(str.getBytes());
    try {
        //需要清空缓冲区的标记,再进行操作 buffer.flip();
          //将内容写到通道中 channel.write(buffer); }
    catch (IOException e) { e.printStackTrace(); } fileOutputStream.close(); } }
    package com.cxy.ssp.Automic;
    
    import java.io.FileInputStream;
    import java.nio.ByteBuffer;
    import java.nio.channels.FileChannel;
    
    public class Demo4 {
        public static void main(String[] args) throws Exception{
            //先构建输入流,
            FileInputStream fileInputStream = new FileInputStream("bas.txt");
            //通过流获取通道
            FileChannel channel = fileInputStream.getChannel();
            //准备缓存冲区
            ByteBuffer buffer = ByteBuffer.allocate(1024);
            //从通道里面读取数据。是字节数据
            channel.read(buffer);
            //打印内容
            System.out.println(new String(buffer.array()));
           //关闭
            fileInputStream.close();
        }
    }
    package com.cxy.ssp.Automic;
    
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.nio.channels.FileChannel;
    
    public class Demo5 {
        public static void main(String[] args) throws Exception {
            FileInputStream fileInputStream = new FileInputStream("bas.txt");
            FileOutputStream fileOutputStream = new FileOutputStream("b.txt");
    
            FileChannel channel = fileInputStream.getChannel();
            FileChannel channel1 = fileOutputStream.getChannel();
    
            channel1.transferFrom(channel,0,channel.size());
    
            channel1.close();
            channel.close();
    
    
        }
    }

    思路:首先构建输入或者输出流,然后通过输出或者输入流建立通道,channle

    创建缓冲区,进行缓存区的操作,通道的操作

    以上代码总结:

    1  输入输出是跟你电脑而言的,输出到电脑意外,就是输出,电脑上就是输入

    2 输出流,需要向缓冲区里面put字节数据,

    3 输入流:不需要向缓冲区里面进行put数据,那么只需要从通道里面读取数据就可以

  • 相关阅读:
    Ubuntu下speedtest的安装
    Ubuntu下快速安装LAMP server
    用python3.3爬取图片
    用python3.3结合snmpget截取信息
    开源数据库Postgresql的备份和恢复
    vuedraggable 两个不同结构的数组之间拖拽
    MyBatis 使用另一个 mapper 中的 resultMap 和 sql
    怎样处理从后台传来大量数据的分页操作
    doc命令操纵数据库
    (全)Mac中mysql的root账户初始密码忘记解决办法以及更改
  • 原文地址:https://www.cnblogs.com/xiufengchen/p/11563287.html
Copyright © 2011-2022 走看看