实例讲述Java IO文件复制
作者:laozhang 发布时间:2023-01-30 17:25:32
标签:Java,IO,文件复制
前言:IO流主要分为两大类,分别是字节流与字符流
注意:
1、音频文件、图片、视频(范围广),就用字节流
2、只涉及到文本的,就用字符流
使用字节流复制文本内容(其他文件也可以)
代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class CopyFile {
public static void main(String[] args) {
try{
File inFile=new File("src.txt"); //源文件
InputStream in=new FileInputStream(inFile); //文件输入流
File outFile=new File("tar.txt"); //目标文件
OutputStream out=new FileOutputStream(outFile); //文件输出流
byte[] buff=new byte[1024]; //创建缓冲区,分配1024个字节大小的内存给buff
int num=0;
while((num=in.read(buff))!=-1){ //判断每次读取的最大字节数是否为1024
out.write(buff,0,num);
// out.write(buff); //这样也可以,不过容易造成文件内容不正确
out.flush(); //刷新缓冲区
String s=new String(buff);
System.out.println("文件内容复制成功");
System.out.println("文件复制内容为\n"+s);
}
in.close(); //关闭输入流
out.close(); //关闭输出流
// inFile.delete(); //删除源文件
// outFile.renameTo(new File("reName.txt")); //输出文件重命名
}
catch(FileNotFoundException e){
e.printStackTrace(); //在命令行打印异常信息在程序中出错的位置及原因
}
catch(IOException e){
e.printStackTrace();
}
}
}
使用字符流复制文本内容(仅限文本文件)
代码如下:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyFile{
public static void main(String[] args) {
try{
File inFile=new File("D:/src.txt"); //源文件
FileReader fileReader=new FileReader(inFile); //读取文件字符流
BufferedReader bufferedReader=new BufferedReader(fileReader); //把读取到的字符流放入缓存
File outFile=new File("D:/tar.txt"); //目标文件
FileWriter fileWrite=new FileWriter(outFile); //写入字符流
BufferedWriter bufferedWriter=new BufferedWriter(fileWrite); //把要输入的字符流放入缓存
String s="";
String str = "";
while((s=bufferedReader.readLine())!=null){ //判断文件字符流是否读取完毕
bufferedWriter.write(s); //字符流缓存写入文件
bufferedWriter.newLine(); //按行读取,遇到换行符则换行
bufferedWriter.flush(); //刷新缓存
str+=s;
}
System.out.println("文件复制内容为\n"+str);
//关闭输入输出流
fileReader.close();bufferedReader.close();
fileWrite.close();bufferedWriter.close();
// inFile.delete(); //删除源文件
// outFile.renameTo(new File("reName.txt")); //输出文件重命名
}
catch(FileNotFoundException e){
e.printStackTrace(); //在命令行打印异常信息在程序中出错的位置及原因
}
catch(IOException e){
e.printStackTrace();
}
}
}
说明:
如果想以追加文件内容,而不是覆盖的方式来复制文本内容,则修改如下
OutputStream out=new FileOutputStream(outFile,true); //字节流
FileWriter fileWrite=new FileWriter(outFile,true); //字符流
如果要在字符流指定缓存区大小,则修改如下
BufferedWriter bufferedWriter=new BufferedWriter(fileWrite,1024);
来源:https://www.idaobin.com/archives/761.html


猜你喜欢
- 结果映射ResultMap引入resultMap–MyBatis中最强大的元素数据库字段名::实体类字段名:public
- 本文实例讲述了C#使用WebClient登录网站并抓取登录后的网页信息实现方法。分享给大家供大家参考,具体如下:C#登录网站实际上就是模拟浏
- JAVA 枚举单例模式及源码分析的实例详解 单例模式的实现有很多种,网上也分析了
- java 线程锁在Java线程中运用synchronized关键字来达到同步的 synchronized可以锁方法,锁类,锁对象,锁代码块方
- 学习内容Java I/O 项目案例内容管理java文件I/O实例----生成报表我们之前学习了两个重要的模块,一个就是Java I/O 另外
- Java 8 最大的特性无异于更多地面向函数,比如引入了lambda等,可以更好地进行函数式编程。前段时间无意间发现了map.merge()
- 前言使用maven创建的springboot项目,默认是jar包,springboot还有自己带的tomcat。现在需要将项目打包,并部署到
- 最近学习Spring,一直不太明白Srping的切面编程中的的argNames的含义,经过学习研究后,终于明白,分享一下需要监控的类:pac
- 搭建个SSM框架居然花费了我好长时间!特此记录!需要准备的环境:idea 2017.1jdk1.8Maven 3.3.9请提前将idea与M
- 一个中大型的 Java 项目往往包含若干 JAR 包,这些 JAR 包有着不同的版本号。如果这些 JAR 包单独发布,然后直接通过版本号引用
- 这篇文章主要介绍了Java模拟多线程实现抢票,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考
- 如果一个项目内有很多个界面,那么在layout下会有太多的activity***.xml文件,这个时候就需要使用文件夹对这些分别存放了。当然
- 最近IDEA打可执行Jar包搞了三天,一直失败,好好学习一下Maven-assembly,在此记录一下1. 需求项目打包,满足以下要求:1.
- 前言在一个名为种花家的小镇上,生活着一群热爱编程的人。他们致力于构建出高效、可维护的软件系统,而 Spring Boot 框架成为了他们的不
- Java实现并发的几种方法Java程序默认以单线程方式运行。synchronizedJava 用过synchronized 关键字来保证一次
- 前言前一段时间使用java来调用chatgpt的接口,然后写了一个简单小程序,java调用chatgpt接口,实现专属于自己的人工智能助手,
- Flayway是一款数据库版本控制管理工具,,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里;不仅
- 1、Json的制作package com.example.usingjson2; import org.json.
- java8的stream流能完美解对象集合去重问题. List<UserCar> list1 = new ArrayList()
- 本文为大家整理了C#图片切割、图片压缩、缩略图生成的实现代码,大家可以收藏,方便以后使用,具体内容如下/// 图片切割函数 /// <