zoukankan      html  css  js  c++  java
  • java 20

    复制文本文件:把当前目录下的FileIntputStream.java文件里面的内容复制到当前目录的b.txt文件中


      分析
        数据源:
          FileIntputStream.java -- 读取数据 -- FileInputStream
        目的地:
          b.txt --- 写入数据 ---- FileOutputStream

      思路:首先读取数据源的内容,然后把读取到的内容再写入到目的地中
      前提:数据源存在,否则会报错

     1 import java.io.FileInputStream;
     2 import java.io.FileOutputStream;
     3 import java.io.IOException;
     4 public class CopyFileDemo1 {
     5 
     6     public static void main(String[] args) throws IOException {
     7         //首先从数据源中读取数据
     8         //创建字节输入流
     9         FileInputStream in = new FileInputStream("a.txt");
    10         //创建字节输出流
    11         FileOutputStream out = new FileOutputStream("b.txt");
    12         //使用读取字节的方式读取数据
    13         int by = 0;
    14         while((by = in.read()) != -1){
    15             //读取到的数据直接输入到目的地中
    16             out.write(by);
    17         }
    18

            in.close();
            out.close();

    19     }
    20 
    21 }

    在上述的a.txt文件中,就算是中文,也能够完整复制到b.txt里面。

    原因:因为这里是从数据源中读取数据后,并没有进行转码,又直接复制到目的地中。

    说到这里,就有个疑问:计算机是怎么对汉字进行存储的?

    String s = "中国是我们的祖国;
    byte[] bys = s.getBytes();
    System.out.println(Arrays.toString(bys));

    结果是:[-42, -48, -71, -6, -54, -57, -50, -46, -61, -57, -75, -60, -41, -26, -71, -6]

    从就可以看出,在计算中,汉字的存储是分成两个字节的

      第一个字节肯定是负数。
      第二个字节常见的是负数,可能有正数。但是没影响。

    复制图片、视频、MP4之类的一样的操作,只是后两者的读取数据方式应该用

    int read(byte[] b):一次读取一个字节数组  

    需求:复制D:music音乐里的Beyond - 真的爱你.mp3到文件目录下

     1         //使用字节输入流输出mp3文件
     2         //定义字节输入流对象
     3         FileInputStream in = new FileInputStream("D:\music\音乐\Beyond - 真的爱你.mp3");
     4         //定义字节输出流对象
     5         FileOutputStream ou = new FileOutputStream("真的爱你.mp3");
     6         //使用输入字节数组的方法输入内容
     7         //定义一个字节数组
     8         byte[] by = new byte[1024];
     9         int i = in.read();
    10         while(i != -1){
    11             //使用字节输出流输入内容
    12             ou.write(by,0,i);
    13         }
    14         in.close();
    15         ou.close();

    字节流的两种读取方式的图解:

    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
  • 相关阅读:
    linux下安装mysql
    python -- 相对路径、绝对路径、以及路径的获取
    Jekyll 使用入门
    argparse 使用指南
    requests快速入门
    Pandoc中的Markdown语法
    利用Github Pages建立仓库“门面”
    Anaconda使用入门
    Python连接SQL Server数据库
    SQL Server 部署CLR程序集错误`6218`
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5923519.html
Copyright © 2011-2022 走看看