IO-文件 File 复制 读写 总结
以字节流读写的三种方式
public class Test {private static final String FILE_PATH = "e:\\";private static final String FILE_TYPE = ".exe";private static final String FILE_FROM = FILE_PATH + 0 + FILE_TYPE;private static final String COPY_FILE_1 = FILE_PATH + 1 + FILE_TYPE;private static final String COPY_FILE_2 = FILE_PATH + 2 + FILE_TYPE;private static final String COPY_FILE_3 = FILE_PATH + 3 + FILE_TYPE;public static void main(String[] args) throws IOException {copyByBufStream(FILE_FROM, COPY_FILE_1);copyByBufArray(FILE_FROM, COPY_FILE_2);copyByByte(FILE_FROM, COPY_FILE_3);}/*** 利用缓冲输入流读取到一个缓冲容器后再写入。建议使用*/public static boolean copyByBufStream(String filePathFrom, String filePathTo) {try {BufferedInputStream bufis = new BufferedInputStream(new FileInputStream(filePathFrom));BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream(filePathTo));int ch = 0;while ((ch = bufis.read()) != -1) {bufos.write(ch);}bufos.close();bufis.close();return true;} catch (FileNotFoundException e) {e.printStackTrace();return false;} catch (IOException e) {e.printStackTrace();return false;}}/*** 每次读取一个指定长度数组的字节。建议使用*/public static boolean copyByBufArray(String filePathFrom, String filePathTo) {try {FileInputStream fis = new FileInputStream(filePathFrom);FileOutputStream fos = new FileOutputStream(filePathTo);byte[] buf = new byte[1024];int len = 0;while ((len = fis.read(buf)) != -1) {fos.write(buf, 0, len);}fos.close();fis.close();return true;} catch (FileNotFoundException e) {e.printStackTrace();return false;} catch (IOException e) {e.printStackTrace();return false;}}/*** 一次读取一个字节。千万不要用,速度超级慢!*/public static boolean copyByByte(String filePathFrom, String filePathTo) {try {FileInputStream fis = new FileInputStream(filePathFrom);FileOutputStream fos = new FileOutputStream(filePathTo);int ch = 0;while ((ch = fis.read()) != -1) {fos.write(ch);}fos.close();fis.close();return true;} catch (FileNotFoundException e) {e.printStackTrace();return false;} catch (IOException e) {e.printStackTrace();return false;}}}
以字符流读写的三种方式
public class Test {private static final String FILE_PATH = "e:\\";private static final String FILE_TYPE = ".txt";private static final String FILE_FROM = FILE_PATH + 0 + FILE_TYPE;private static final String COPY_FILE_1 = FILE_PATH + 1 + FILE_TYPE;private static final String COPY_FILE_2 = FILE_PATH + 2 + FILE_TYPE;private static final String COPY_FILE_3 = FILE_PATH + 3 + FILE_TYPE;public static void main(String[] args) throws IOException {//注意,只能复制纯文本格式的文件,否则就会出现乱码copyByBufLine(FILE_FROM, COPY_FILE_1);copyByBufArray(FILE_FROM, COPY_FILE_2);copyByChar(FILE_FROM, COPY_FILE_3);}/*** 一次写入一行字符*/public static boolean copyByBufLine(String filePathFrom, String filePathTo) {try {BufferedReader bufr = new BufferedReader(new FileReader(filePathFrom));BufferedWriter bufw = new BufferedWriter(new FileWriter(filePathTo));String line = null;//另外开辟一个缓冲区,存储读取的一行数据,返回包含该行内容的字符串,不包含换行符,如果已到达流末尾,则返回【 null】while ((line = bufr.readLine()) != null) {bufw.write(line);bufw.newLine();// 写入一个行分隔符bufw.flush();}bufr.close();bufw.close();return true;} catch (FileNotFoundException e) {e.printStackTrace();return false;} catch (IOException e) {e.printStackTrace();return false;}}/*** 一次写入指定个数的字符*/public static boolean copyByBufArray(String filePathFrom, String filePathTo) {try {BufferedReader bufr = new BufferedReader(new FileReader(filePathFrom));BufferedWriter bufw = new BufferedWriter(new FileWriter(filePathTo));char[] buf = new char[1024];int len = 0;while ((len = bufr.read(buf)) != -1) {bufw.write(buf, 0, len);bufw.flush();len = 0;}bufr.close();bufw.close();return true;} catch (FileNotFoundException e) {e.printStackTrace();return false;} catch (IOException e) {e.printStackTrace();return false;}}/*** 一次写入一个字符*/public static boolean copyByChar(String filePathFrom, String filePathTo) {try {BufferedReader bufr = new BufferedReader(new FileReader(filePathFrom));BufferedWriter bufw = new BufferedWriter(new FileWriter(filePathTo));int ch = 0;while ((ch = bufr.read()) != -1) {bufw.write(ch);//写入单个字符}bufr.close();bufw.close();return true;} catch (FileNotFoundException e) {e.printStackTrace();return false;} catch (IOException e) {e.printStackTrace();return false;}}}
IO-文件 File 复制 读写 总结的更多相关文章
- Java基础面试操作题: File IO 文件过滤器FileFilter 练习 把一个文件夹下的.java文件复制到另一个文件夹下的.txt文件
package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...
- Go标准库之读写文件(File)
Go标准库之读写文件(File) 创建一个空文件 package main import ( "log" "os" ) func main() { file, ...
- Java IO流之【缓冲流和文件流复制文件对比】
与文件流相比,缓冲流复制文件更快 代码: package Homework; import java.io.BufferedOutputStream; import java.io.File; imp ...
- java学习笔记(九):Java 流(Stream)、文件(File)和IO
Java 的控制台输入由 System.in 完成. 为了获得一个绑定到控制台的字符流,你可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流.需要import ...
- Java - 17 Java 流(Stream)、文件(File)和IO
Java 流(Stream).文件(File)和IO Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型. ...
- [PY3]——IO——文件读写
文件打开和关闭 # 使用open 打开文件,返回时值是一个 File-like对象 f.open('/test/file') # 使用read读取文件 f.read( ) # 使用close关闭文件 ...
- 流Stream 文件File 流IO
Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类 ...
- c# 命令行下编译c#文件 // c# file类读写文件
c# 命令行下编译c#文件 2010-03-01 15:02:14| 分类: c# 学习|字号 订阅 在 开始 ——>程序 ——>vstool中打开vs2008命令提示. 通过 ...
- 20180803-Java 流(Stream)、文件(File)和IO
Java 流(Stream).文件(File)和IO 下面的程序示范了用read()方法从控制台不断读取字符直到用户输入"q". // 使用BufferedReader 在控制台读 ...
随机推荐
- 手机端MVC-js框架-Gillie-中文版本
译者声明: 1.代码库发布在http://pablovallejo.github.io/gillie/ 2.查看API介绍直接戳这里看整理. Gillie是一个轻型MVC框架,受Backbone的启发 ...
- window 7 C盘整理
发现两篇不错的文章可以参考一下: http://blog.renren.com/blog/200083873/467545630 http://www.uedbox.com/win7-c-disk-s ...
- nginx配置无效的问题
今天修改nginx的一个配置文件,却怎么都没效果,发现是启动nginx指定的配置文件不一样. #ps aux|grep nginx root 17672 0.0 0.0 45856 2 ...
- Debian ls 文件 文件夹颜色显示
一.让debian终端文件显示不同颜色 vim /etc/vim/vimrc取消“syntax on”的注释 二.让debian终端文件夹显示不同颜色 修改.bashrc文件,vim /root/. ...
- C# 根据IP查询地址归属地
必备文件:IPLocation.dll.QQWry.Dat 下载地址:http://pan.baidu.com/s/1jG1dlOy (可百度下载) 之前有过将 QQWry.Dat 转为 Access ...
- Scut:缓存管理
Scut 的缓存管理看起来还是蛮复杂的. redis 本身就有内存缓存+持久化的作用,Scut还是自己封装了一层内存缓存+Redis缓存+持久化. . 这是一个缩略版本的结构图. 1. 上半部分是 ...
- 如何改变dreamweaver的编码方式
- 构建高可用web站点学习(二)
web站点的缓存学习 缓存在web应用里面十分常见,也有各种各样的缓存,从请求开始一直到代码处理的阶段都可以采取缓存.下面就逐一介绍: 一.客户端缓存(浏览器和http方面) 前端页面缓存主要遵循ht ...
- linq 的Distinct 扩展方法.
List<miniclass> classs = new List<miniclass>(); classs.Add(new miniclass() { token = &qu ...
- 【Hybrid App】Hybrid App开发 四大主流移平台分析
转自http://dev.yesky.com/238/34657738.shtml Hybrid App在过去的两年中已经成为移动界的核心话题,但是作为一名Web开发者来说要如何站在移动互联网的浪潮之 ...