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

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • kettle环境搭建_kettle配置文件在哪

    kettle环境搭建_kettle配置文件在哪kettle工具环境配置欢迎使用Markdown编辑器kettle的配置Java环境配置欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。kettle的配置地址:https://sourceforge.net/projects/penta…

    2022年10月16日
  • java byte数组转json对象

    java byte数组转json对象Stringmessage=newString(“byte数组”);//去掉多余的引号和转义字符Stringsubstring=message.substring(1,message.length()-1).replace(“\\\””,”‘”);//转化为json对象JSONObjectjsonObject=newJSONObject(substring);

  • 【详细教程·本人亲测】解决win10家庭版系统C:\Users用户名中有中文,更改为英文的问题

    【详细教程·本人亲测】解决win10家庭版系统C:\Users用户名中有中文,更改为英文的问题【本人亲测】解决win10家庭版系统C:\Users用户名更改的问题【前言】新电脑刚买来,自带win10系统,激活时注册用户名和密码,为了方便记忆把用户名设为中文。随着后来学习和工作软件越装越多,在学习软件开发才发现Users必须为英文,此时重装系统成本极大!因此本人花了大量时间在网上寻找解决方案。但是基本上不适合win10家庭版。终于最后搜到一个方案解决,深知不易,特分享给各位。<第一…

  • Centos7安装Mysql5.7最全教程[通俗易懂]

    Centos7安装Mysql5.7最全教程[通俗易懂]最近需要在Linux系统上使用MySQL,记录一下安装过程吧,为后来的同学排除一些问题。更新yumyumupdate-y1.安装wget工具我安装到了/export/install这里可以进入你们所想要安装的地方cd/先进入你想安装的位置,此后全部在此文件夹进行操作。sudoyuminstall-ywget2.使用wget下载mysqlyum源:wgethttps://dev.mysql.com/get/mysql80-community-release-el

  • Java培训/广州Java培训/最好的Java培训机构

    Java培训/广州Java培训/最好的Java培训机构 Java培训/广州Java培训/最好的Java培训机构   随着互联网已经成为人们不可分割的一部分,很多人将自己的未来都投入到互联网这块。   如果你也想在互联网有一番作为学们IT技术,那到底学什么好呢?        在IT行业,Java是目前最热门的软件开发技术,Java作为IT业最知名的品牌之一,各种技术规范已经相当成熟,支持的框…

  • sql server数据库置疑_数据库置疑什么原因

    sql server数据库置疑_数据库置疑什么原因一、数据库置疑产生的原因1、SQLServer所在分区空间是否足够,数据库文件大小是否达到最大文件限制,FAT32事务格式只支持4G以内的文件?2、数据库文件损坏或被非正常删除时会出现这种情况;3、病毒防火墙的扫面也可能会引起数据库置疑;4、当SQLServer启动时,将会尝试获得对数据库文件的排他访问权,如果此时该文件被其他程序占用,或者遗失,数据库将会被标记为置疑;5、电脑非法关机也可能会造…

发表回复

您的电子邮箱地址不会被公开。

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