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


相关推荐

  • Java安全之Unsafe类

    Java安全之Unsafe类0x00前言前面使用到的一些JNI编程和Javaagent等技术,其实在安全里面的运用非常的有趣和微妙,这个已经说过很多次。后面还会发现一些比较有意思的技术,比如AS

    2021年12月12日
    54
  • xshell连不上虚拟机linux的解决办法_虚拟机linux大概什么配置

    xshell连不上虚拟机linux的解决办法_虚拟机linux大概什么配置刚上手linux,我用的是VMareWorkstation虚拟机,装的是Ubuntu操作系统,就遇到虚拟机不能上网问题,以及xshell连接虚拟机失败。网上找了好多相关问题的解决方案,在懵懵懂懂中终于解决了上述问题。记录一下,以供参考1.首先window+r输入cmd进入命令行输入:ipconfig可以看到如下:重点关注:本机…

    2025年12月1日
    7
  • 【Git学习】解决GitLab内存消耗大的问题

    【Git学习】解决GitLab内存消耗大的问题一 问题描述今天有提示反馈 Gitlab 服务器 push 不上去 让我看看是不是 Gitlab 服务器出了什么问题 我查看了下 gitlab 在线的信息这台服务器消耗了 31 3GB 内存 然后我 11 14 分尝试去连接 Gitlab 服务器 发现要很久很久才连接上 直到 11 点 18 分才登陆成功 使用 free 命令查看了下内存情况 我艹 太猛了吧 使用了 60 个 G 内存只剩 2 6G 了 刚想继续操作 就

    2026年3月19日
    2
  • vue中使用onbeforeunload

    vue中使用onbeforeunload前言 onbeforeunlo 事件可以用在页面刷新前 页面关闭前 进行提示判断等相关操作 也就是说你再这个事件里面添加的操作 你点击 f5 刷新或者退出这个页面都会触发 效果图 js 和 vue 中通过案例来说明用法 一 js 中使用方法 html head title thisisidonbe title head html

    2026年3月18日
    1
  • 【架构】Lambda架构

    【架构】Lambda架构一、出现的背景1.1从传统数据库到NoSQL,再到Hadoop很多人学习大数据都听说过以下发展进程,MySQL/Oracle/SQLServer→Hadoop/Hive/Spark。但还有一个时期,是大家容易忽略的——NoSQL。我们不能忽略掉它。其实,NoSQL的发展和推广要比Hadoop更早,在没有Hadoop的大数据过渡期,随着数据量急剧膨胀,大家纷纷从传统的关系型数据库转变到NoSQL数据库,各种各样的NoSQL数据库应用而生。有了NoSQL数据库,可以轻易将机器的数量扩展到.

    2022年6月25日
    35
  • Idea激活码永久有效Idea2017.3.7激活码教程-持续更新,一步到位

    Idea激活码永久有效Idea2017.3.7激活码教程-持续更新,一步到位Idea激活码永久有效2017.3.7激活码教程-Windows版永久激活-持续更新,Idea激活码2017.3.7成功激活

    2022年6月17日
    37

发表回复

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

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