使用I/O操作文件,并完成不同存储位置文件内容的复制粘贴

有两种方法分别是通过数组和字符拼接读取文件内容(本质为复制粘贴

一,字符拼接是通过StringBuilder实现的,缺点是不能打印中文

//StringBuilder 是一个字符拼接的工具类,频繁使用字符串拼接的时候可以用

先给大家看一下抛出异常时候的情况,比较好理解

代码实现如下

public static String readFile(String path) throws IOException {
    FileInputStream fis = new FileInputStream(path);
    StringBuilder sb = new StringBuilder();
    int tmp;
    while ((tmp = fis.read()) != -1) {
        sb.append((char)tmp);
    }
    fis.close();
    return sb.toString();
}
public static void main(String[] args) throws IOException {
String s = readFile("超人.txt");
System.out.println(s);

二,通过数组的方式实现,优点是既可以打印中文,也可以打印英文

//available()方法来获取文件大小,进而用来定义缓冲数组的长度。

代码如下

public static String readFileBytes(String path) throws IOException {
    FileInputStream fis = new FileInputStream(path);
    byte[] b=new byte[fis.available()];
    fis.read(b);
    fis.close();
    return new String(b);
}
public static void main(String[] args) throws IOException {
String s = readFileBytes("超人.txt");
System.out.println(s);

三,代码的优化并实现复制粘贴

这里用try catch来捕捉异常,不需要抛出

public static void main(String[] args) throws IOException {
    FileInputStream fis=null;
    FileOutputStream fos=null;

try{
    //1、创建输入流对,负责读取D:/ 我的青春谁做主.txt文件
    fis= new FileInputStream("D:/我的青春谁做主.txt");
    //2、创建输出流对象
    fos= new FileOutputStream("C:/myFile/myPrime.txt");
    //3、创建中转站数组,存放每次读取的内容
    byte[] words=new byte[1024];
    //4、通过循环实现文件读取
    int len = -1;
    while((len = fis.read(words))!=-1){
        fos.write(words, 0, len);
    }
    //5、开始清空缓存区
    fos.flush();
    System.out.println("复制完成,请查看文件!");
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} finally{
    //6、关闭流
    try {
        if (fos != null)
            fos.close();
        if (fis != null)
            fis.close();
    }catch (IOException e){
        e.printStackTrace();//打印异常信息在程序中出错的位置及原因
        }
     }
}

这里的文件需要自己创建,

read的用法

read函数可以读取文件。读取文件指从某一个已打开地文件中,读取一定数量地字符,然后将这些读取的字符放入某一个预存的缓冲区内,供以后使用

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值