zoukankan      html  css  js  c++  java
  • java文件处理(3)——实现文件复制和文件移动

    任务要求:
    通过二进制流的操作方式把程序调整为可以实现对任何类型文件进行文件复制(而不是调用windows命令行的内部命令copy)。
    通过二进制流的操作方式把程序调整为可以实现对任何类型文件进行文件移动(而不是调用windows命令行的外部命令move)。
    一.文件复制
    1.介绍InputStream和OutputStream
    InputStream和OutputStream是抽象类,是所有字节输入流和输出流的父类。

    InputStream(输入流):输入流是用来读入数据的。(读入)
    OutputStream(输出流):输出流是用来写出数据的。(写出)
    (1)文件输入流——FileInputStream
    FileInputStream 从文件系统中的某个文件中获得输入字节。
    构造方法

    通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。 public FileInputStream(File file);
    通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。 public FileInputStream(String name);
    (2)文件输出流——FileOutputStream
    文件输出流是用于将数据写入到文件中。
    构造方法

    创建一个向指定 File 对象表示的文件中写入数据的文件输出流 public FileOutputStream(File file);
    创建一个向指定 File 对象表示的文件中写入数据的文件输出流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。 public FileOutputStream(File file,boolean append);
    创建一个向具有指定名称的文件中写入数据的输出文件流 public FileOutputStream(String name);
    创建一个向具有指定 name 的文件中写入数据的输出文件流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。 public FileOutputStream(String name,boolean append);
    2.进行文件复制
    代码如下:

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;

    class CopyFile
    {
    static void copy(String srcPathStr, String desPathStr)
    {
    //获取源文件的名称
    String newFileName = srcPathStr.substring(srcPathStr.lastIndexOf("\\")+1); //目标文件地址
    System.out.println("源文件:"+newFileName);
    desPathStr = desPathStr + File.separator + newFileName; //源文件地址
    System.out.println("目标文件地址:"+desPathStr);
    try
    {
    FileInputStream fis = new FileInputStream(srcPathStr);//创建输入流对象
    FileOutputStream fos = new FileOutputStream(desPathStr); //创建输出流对象
    byte datas[] = new byte[1024*8];//创建搬运工具
    int len = 0;//创建长度
    while((len = fis.read(datas))!=-1)//循环读取数据
    {
    fos.write(datas,0,len);
    }
    fis.close();//释放资源
    fis.close();//释放资源
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    public static void main(String[] args)
    {
    String srcPathStr = "E:\\java task\\zhl.txt"; //源文件地址
    String desPathStr = "E:\\java task\\zhlll"; //目标文件地址
    copy(srcPathStr, desPathStr);//将E:\\java task\\zhl.txt文件拷贝到E:\\java task\\zhlll
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    结果如下:


    二.文件移动
    1.renameTo 的使用
    (1)重命名文件

    File oldName = new File("E:\\java task\\zh.txt");
    File newName = new File("E:\\java task\\zhl.txt");
    System.out.println(oldName.renameTo(newName));//zh.txt改为zhl.txt
    1
    2
    3
    (2)进行文件的移动操作

    File oldName = new File("E:\\java task\\zhl.txt");
    File newName = new File("E:\\java task\\zhlll\\zhl.txt");
    System.out.println(oldName.renameTo(newName));//E:\\java task\\zhl.txt移动至E:\\java task\\zhlll
    1
    2
    3
    2.实现文件移动
    代码如下:

    import java.io.File;
    class MoveFile
    {
    public static void main(String[] agrs)
    {
    try
    {
    File file=new File("E:\\java task\\zhl.txt"); //源文件
    if (file.renameTo(new File("E:\\java task\\zhlll\\"+file.getName()))) //源文件移动至目标文件目录
    {
    System.out.println("File is moved successful!");//输出移动成功
    }
    else
    {
    System.out.println("File is failed to move !");//输出移动失败
    }
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    结果如下:

    ————————————————
    版权声明:本文为CSDN博主「张海玲」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_42014622/article/details/82959678

  • 相关阅读:
    关于R.styleable的问题
    Android游戏开发学习(5)--实现Button悬浮于与SurfaceView之上
    android悬浮按钮(Floating action button)的两种实现方法
    LinearLayout属性android:orientation
    Android详细的对话框AlertDialog.Builder使用方法
    SQLiteDatabase中query、insert、update、delete方法参数说明
    android原始sqlite中query的复杂用法
    Android加载手机磁盘上的资源---decodeFile方法的使用
    Laravel 5.2分页--怎么在一个页面实现两个以上的列表分页,互不影响?
    琐碎注意点⚠️
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/15665136.html
Copyright © 2011-2022 走看看