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


相关推荐

  • ttyLinux安装完整指南「建议收藏」

    ttyLinux安装完整指南「建议收藏」本文地址:http://blog.csdn.net/useway《Java程序员,上班那点事儿》ttyLinux号称是最小的Linux系统,这两天找到了一个很好用虚拟机VirtualBox,这个虚拟机是SUN开发的一个免费开源的虚拟机,原来一直用vmware,不过发现SUN的这个免费的虚拟机更好用,主要是比较轻量级的,感觉挺好。正好想试试ttyLinux到底有多小,就用这个虚拟机试试…

    2022年8月12日
    3
  • html5 移动端单页面,html5 移动端单页面布局「建议收藏」

    html5 移动端单页面,html5 移动端单页面布局「建议收藏」移动端的web网页使用的是响应式设计,但一般我们看到的网站页面都是跳转刷新得到的,比如通过点击一个menu后进入到另一个页面今天来说下是移动端的单页面的布局。单页面就是一切操作和布局都是在一个页面下进行不需要页面跳转,再通俗的说就是类似于平常的选项卡但是他又比选项卡要复杂一点因为他是在手机端并且当做是一个页面单页面的作用以及优势:1.嵌套到native里实现app的混合开发2.数据量小的页…

    2022年6月21日
    27
  • MATLAB矩阵复制及扩充

    MATLAB矩阵复制及扩充文章目录一、repmat()方法二、Kron()方法一、repmat()方法例一:(行方向和列方向分别平铺矩阵,红框2,3表示平铺倍数)TIPS:【原矩阵】处可用用户自定义的矩阵变量代替   即Mat=[123;456],可用Mat替代function中原矩阵的位置例二:(行方向和列方向分别平铺矩阵,红框2,3表示平铺倍数)例三:(列方向平铺矩阵,红框2表示平铺矩阵的倍数)例四:(行方向平铺矩阵,红框3表示平铺矩阵的倍数)二、Kron()方法kron(A,B)

    2022年6月25日
    168
  • C#上位机软件

    C#上位机软件好久没写csdn博客了,最近工作需要,需要写一个上位机,通过白漂终于完成了,在此发出来和大家分享分享,欢迎指出问题;链接:https://pan.baidu.com/s/16IIzN-pLhPcUpuf5zj3sow提取码:2hzm

    2022年5月31日
    33
  • python中的变量命名规则

    python中的变量命名规则ThereareonlytwohardthingsinComputerScience:cacheinvalidationandnamingthings.在计算机科学领域只有两件难事:缓存失效和给东西起名字变量用的好或不好,和代码质量有着非常重要的联系,合理的使用变量,可以让你的代码可读性更高并且更加简洁。python中的变量命名规则1.变量命名2.变量命名的描述性3.变量名尽量短,但是不要太短4.合理使用变量5.变量定义尽量靠近使用6.合理使用namedtuple/

    2022年5月31日
    51
  • JSONObject转换为JSONArray

    JSONObject转换为JSONArray一.JSONObject转JSONArray//json串内容如下{“request_id”:”1111111111112″,”audience”:[“aaa”,”bbb”],”settings”:{“ttl”:36000000,”strategy”:{“default”:3,”ios”:4}}}以com.alibaba.fastjson中的JSONAr

    2022年5月27日
    30

发表回复

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

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