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 在控制台读 ...
随机推荐
- css 雪碧图 及jquery定位代码
无意间发现了一个很神奇的事情,就是 鼠标悬停在图片上方会切换,起初以为图标是单独插入的.但发现居然是一张完整的图片. 一万只草泥马在心中奔腾.这是怎么实现的? 后来询问得知,这是css精灵技术(spr ...
- html5--canvas学习笔记
1. 添加<canvas>元素 right: <canvas id="myCanvas" width="300" height="3 ...
- 无法为数据库 XXX 中的对象XXX 分配空间,因为 'PRIMARY' 文件组已满。请删除不需要的文件、删除文件组中的对象、将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间。
无法为数据库 XXX 中的对象XXX 分配空间,因为 'PRIMARY' 文件组已满.请删除不需要的文件.删除文件组中的对象.将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘 ...
- 在jQuery.getData中renderCallback使用不同创建方式的结果
JavaScript 中需要创建函数的话,有两种方法:函数声明.函数表达式,各自写法如下:// 方法一:函数声明function foo() {}// 方法二:函数表达式var foo = funct ...
- 感性体验 Android 5.0 Lollipop
引言 Android5.0大概是在11月下旬开始进行OTA推送,博主手上的这台五太子(Nexus 5)也在前几天收到了Google的推送,博主当然是按耐不住赶紧FQ升级啦,但无奈的是这个大版本更新包有 ...
- spinner 下拉框控件
spinnerMode=dropdown时,为下拉模式spinnerMode=dialog时,会在界面中间弹出Android:popupBackground=”#f0000000”,可以去除spinn ...
- 关于如何将C语言源文件转化为汇编文件
--转载自:http://blog.21ic.com/user1/6088/archives/2010/68469.html 方法:(假设当前工程中只有一个C代码文件) 第1步:新建一个工程,添加C文 ...
- C51 库函数(2)
3.2 STDIO.H:一般I/O函数 C51编译器包含字符I/O函数,它们通过处理器的串行接口操作,为支持其它I/O机制,只需修改getkey()和putchar()函数,其它所有I/O支持函数依赖 ...
- VMware 11安装Mac OS X 10.10
http://jingyan.baidu.com/article/ff411625b9011212e48237b4.html
- perl 分析mysql binlog
binlog 日志格式: use `zjzc`/*!*/; SET TIMESTAMP=1476326343/*!*/; UPDATE `ProductAccess` pa SET pa.access ...