java文件处理(3)——实现文件复制和文件移动「建议收藏」

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

大家好,又见面了,我是你们的朋友全栈君。

任务要求:

  • 通过二进制流的操作方式把程序调整为可以实现对任何类型文件进行文件复制(而不是调用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.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

(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

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();
		}
	}
}

结果如下:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151081.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月22日 下午4:00
下一篇 2022年6月22日 下午4:16


相关推荐

  • Shell脚本:Linux Shell脚本学习指南(超详细)

    Shell脚本:Linux Shell脚本学习指南(超详细)Shell 脚本 LinuxShell 脚本学习指南 超详细 http c biancheng net view 706 html

    2026年3月17日
    2
  • Linux错误 E325: 注意 发现交换文件

    Linux错误 E325: 注意 发现交换文件方法1、恢复文件:vim-rnginx.conf恢复以后把.swap文件删掉,再打开时就不会用提示,注意.swap文件是个隐藏文件。可用:la查看。以.开头的是隐藏文件。方法2、ls-a查询隐藏文件,删除后缀名为.swp的文件删除rm-f文件名.swp转载:https://blog.csdn.net/u012686154/article/details…

    2022年5月18日
    46
  • switch循环

    switch循环importjava util Scanner authorAlina date2021 年 10 月 10 日 10 07 下午 switch 表达式 case1 语句体 1 break case2 语句体 2

    2026年3月19日
    2
  • python查微信好友是否删除自己_微信 用脚本查看是否被微信好友删除 不用群发用Python脚本查微信被哪些好友删除…「建议收藏」

    python查微信好友是否删除自己_微信 用脚本查看是否被微信好友删除 不用群发用Python脚本查微信被哪些好友删除…「建议收藏」python3为什么不加锁也数据同步不安全,在多线程下并非一定同步。网上有的是例子可以证明,自己搜个试试看就知道了。用脚本快速查看自己被多少微信好友删除找自己删除的微信好友方法:尽管,生命中无数次的回头,也终究错过很多的故事,遗憾过,后悔过,遗憾了红尘中走过却没有带走些什么东西,后悔了一路走来却还是放下了一些东西。是的!一切就好像梦一场,但是梦醒后又想,好像曾经来过!第二种简单方法:如果该好友没…

    2022年6月3日
    45
  • Shell脚本获得核酸反向互补序列

    Shell脚本获得核酸反向互补序列DNA 作为生物的遗传物质 由 2 条互补的链按照 A T C G 碱基配对方式形成双螺旋结构 在生物信息处理时 常常需要得到已知序列的反向互补序列 反向是由于学术界约定俗成序列方向为 5 端到 3 端 因此只互补配对得到的是 3 端到 5 端的配对序列 还需要再反向一次变成 5 端到 3 端 诸如 Python 和其他专门的小工具都可以实现 但是这里尝试用 Shell 来解决问题 问题 获得 fasta 格式核酸序列的反向互补配对

    2026年3月19日
    1
  • volatile关键字作用

    volatile关键字作用一、作用简述内存可见性:保证变量的可见性:当一个被volatile关键字修饰的变量被一个线程修改的时候,其他线程可以立刻得到修改之后的结果。当一个线程向被volatile关键字修饰的变量写入数据的时候,虚拟机会强制它被值刷新到主内存中。当一个线程用到被volatile关键字修饰的值的时候,虚拟机会强制要求它从主内存中读取。 屏蔽JVM指令重排序(防止JVM编译源码生成class时使用重排序)…

    2022年6月1日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号