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数据,那么只需要从通道里面读取数据就可以

  • 相关阅读:
    腾讯的网站是如何检测到你的 QQ 已经登录?
    怎么改变html中placeholderr的文字颜色
    [分享]2013:Linux的黄金之年-十大杰出成就
    .NET MVC 两种视图引擎(Razor、Aspx)
    android:visibility
    获取目录
    Android 判断字符串是否相等
    Android Sqlite
    android 积累
    Android ListView 使用
  • 原文地址:https://www.cnblogs.com/xiufengchen/p/11563287.html
Copyright © 2011-2022 走看看