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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JVM系列文章(三):Class文件内容解析[通俗易懂]

    JVM系列文章(三):Class文件内容解析

    2022年1月29日
  • java try lock_ReentrantLock

    java try lock_ReentrantLockpackageconcurrent;importjava.util.ArrayList;importjava.util.List;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReentrantLock;publicclassTestTryLock{privateListlist=…

    2022年10月15日
  • jps查看java进程(gps弱怎么办)

    JPS(JavaVirtualMachineProcessStatusTool)是JDK1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。我想很多人都是用过unix系统里的ps命令,这个命令主要是用来显示当前系统的进程情况,有哪些进程,及其id。jps也是一样,它的作用是显示当前系统的j

    2022年4月14日
  • ThinkPHP跨控制器调用方法

    ThinkPHP跨控制器调用方法

    2021年10月28日
  • pycharm安装matplotlib超时_pycharm里为啥运行不了pip

    pycharm安装matplotlib超时_pycharm里为啥运行不了pip第一天:pycharm解决Flask-SQLAlchemy按错出错问题刚开始用博客有点不适应首先,我最开始实在settings中1-4步骤非常简单不做过多说明,步骤4我在这里没有选择,版本问题我一般都不去选,基本上都是使用默认的版本。就这样的设置我前前后后错了不知道多少回,之前这样设置安装,例如:flask等等都成功了。这样安装没错错误提示都是都建议:pipinstall要安装的名…

    2022年8月28日
  • Java基础编程练习题

    Java基础编程练习题很多人在自学java的时候看一遍视频,感觉就会了,课后并没有大量的练习来巩固当前所学的知识点,今天给大家整理了一些非常具有代表意义的题。Java基础类型题1、反转一个只有3位数的整数。从控制台输入321,输出1232、将一个字符由小写字母转换为大写字母。从控制台输入a,输出A3、从控制台输入一个字符串,由字母组成,转换成大写后输出。如果输入的是小写,就转换成大写。…

    2022年10月12日

发表回复

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

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