Java文件操作

Java 专栏收录该内容
27 篇文章 0 订阅

Java文件操作

1、简介

Java中的File类给我们提供了文件操作的基础,本博客讲解的内容是工程训练任务2.1中的一些程序,对于写入操作在上一篇博客中已经有所涉及,故本博客只展示任务挑战中的三个小程序。


2、基本任务和代码

(1)挑战任务1

1)任务内容
编写一个Java程序对文本文件按行进行读取,每读取一行后显示此行,并统计此行有多少字节,有多少字符并显示统计结果,最后显示总的行数。

2)任务代码
代码每一行均有注释,代码如下:

import java.io.BufferedReader;//导入java.io包下的BufferedReader类
import java.io.FileReader;//导入java.io包下的FileReader类
import java.io.IOException;//导入java.io包下的IOException类
public class TEST1{//类名
    public static void main(String[] args){//程序主入口函数,带命令行参数
        try {//try代码块,当发生异常时会转到catch代码块中
            //读取指定的文件
            BufferedReader in = new BufferedReader(new FileReader("D:\\CSDN博客展示\\文件存放处\\Test1.txt"));
            String str=null;//定义一个字符串类型变量str
            int i=0;//定义一个整型变量
            while ((str = in.readLine())!= null) {//readLine()方法, 用于读取一行,只要读取内容不为空就一直执行
                i++;
                byte[] bytes=str.getBytes();//获得字节数
                System.out.print("第"+i+"行:"+str+"    ");//输出从每一行读取的内容
                System.out.println("第"+i+"行有"+bytes.length+"个字节"+str.length()+"个字符");//输出每一行的字符和字节个数
            }
            System.out.println("该文本共有"+i+"行");//输出总的行数
        } catch (IOException e) {//当try代码块有异常时转到catch代码块
            e.printStackTrace();//printStackTrace()方法是打印异常信息在程序中出错的位置及原因
        }
    }
}

3)运行结果
这里写图片描述

(2)挑战任务2

1)任务内容
编写一个Java程序通过二进制流的方式实现对任何类型文件的复制操作。
我的思路如下:首先文件Test2.txt在路径“D:\CSDN博客展示\文件存放处”中,然后通过程序将该文件复制到路径“D:\CSDN博客展示\文件复制处”里面。

2)任务代码
代码每一行均有注释,代码如下:

import java.io.File;//导入java.io包下的File类
import java.io.FileInputStream;//导入java.io包下的FileInputStream类
import java.io.FileOutputStream;//导入java.io包下的FileOutputStream类
import java.io.IOException;//导入java.io包下的IOException类
public class TEST2{//类名
    public static void main(String[] args) throws IOException{//程序主入口函数,带命令行参数
        //封装好需要复制的文件原路径
       FileInputStream fis=new FileInputStream("D:\\CSDN博客展示\\文件存放处\\Test2.txt");
       //将文件复制到指定路径下
       FileOutputStream fos=new FileOutputStream("D:\\CSDN博客展示\\文件复制处\\Test2.txt");
       byte[] lsy=new byte[fis.available()];//定义字节数组用来当作缓冲区
       fis.read(lsy);//将文件以字节流形式读入缓冲区字节数组
       fos.write(lsy);//从缓冲区字节数组中以字节流形式取出
       fos.close();//关闭读取流
       fis.close();//关闭写入流
       File file=new File("D:\\CSDN博客展示\\文件复制处\\Test2.txt");//创建文件对象
        if(file.exists()){//if语句的条件,调用exists方法判断文件是否存在
             System.out.println("文件成功复制到指定路径下");//若文件存在,则输出文件存在
        }
        else{//否则
             System.out.println("文件复制失败");//输出文件不存在
        }
    }
}

3)运行结果
这里写图片描述

(3)挑战任务3

1)任务内容
编写一个Java程序通过二进制流的方式实现对任何类型文件的移动操作。
我的思路如下:首先文件Test3.txt在路径“D:\CSDN博客展示\文件存放处”中,然后通过程序将该文件移动到路径“D:\CSDN博客展示\文件移动处”里面。

2)任务代码
代码每一行均有注释,代码如下:

import java.io.File;//导入java.io包下的File类
import java.io.FileInputStream;//导入java.io包下的FileInputStream类
import java.io.FileOutputStream;//导入java.io包下的FileOutputStream类
import java.io.IOException;//导入java.io包下的IOException类
public class TEST3{//类名
    public static void main(String[] args) throws IOException{//程序主入口函数,带命令行参数
        //封装好需要移动的文件源路径
       File file1=new File("D:\\CSDN博客展示\\文件存放处\\Test3.txt");
       FileInputStream fis=new FileInputStream(file1);
       //将文件移动到指定路径下
       FileOutputStream fos=new FileOutputStream("D:\\CSDN博客展示\\文件移动处\\Test3.txt");
       byte[] lsy=new byte[fis.available()];//定义字节数组用来当作缓冲区
       fis.read(lsy);//将文件以字节流形式读入缓冲区字节数组
       fos.write(lsy);//从缓冲区字节数组中以字节流形式取出
       fos.close();//关闭读取流
       fis.close();//关闭写入流
       file1.delete();//删除源文件
       File file2=new File("D:\\CSDN博客展示\\文件移动处\\Test3.txt");//创建文件对象
        if(file2.exists()){//if语句的条件,调用exists方法判断文件是否存在
             System.out.println("文件成功移动到指定路径下");//若文件存在,则输出文件存在
        }
        else{//否则
             System.out.println("文件移动失败");//输出文件不存在
        }
    }
}

3)运行结果
这里写图片描述


3、总结

本博客分享了文件的读取、复制和移动的方法,并且复制和移动不仅仅局限于txt文件,大家可以使用其他类型的文件进行实验,由于这些程序是我在四月份做工程训练任务2.1时所做,故会有一些不足之处,请多多包涵。

  • 24
    点赞
  • 8
    评论
  • 91
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值