File相关的读取和写入以及复制
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
public class FileIO {
//字节读取流
public static void inFile() {
//定义在最外面
File file;
FileInputStream fis;
try {
//1.创建文件对象
file=new File("c:\\abc.txt");
//2.创建读取字节流
fis=new FileInputStream(file);
//3.读取流操作
//3.1逐个字节读取:一个中文占2个字节,所以中文部分显示乱码
for (int i = 0; i < file.length(); i++) {
char c=(char)fis.read();//返回值是字节
System.out.print(c);
}
//3.2多个字节读取
byte[] bt=new byte[(int)file.length()];
fis.read(bt); //将读取的字节存入字节数组bt中
System.out.print(new String(bt));
//4.关闭字节流
fis.close();
} catch (Exception e) {
// TODO: handle exception
}
}
//字节写入流
public static void outFile(String str) {
File file;
FileOutputStream fos;
try {
//1.获取文件对象
file=new File("c:\\abc.txt");
//2.常见写入字节流
//fos=new FileOutputStream(file);//将数据写到file这个目标文件中
fos=new FileOutputStream(file, true);//当true为false是,覆盖写入,默认false
//3.写入操作
str.getBytes();
fos.write(str.getBytes());
//4.关闭字节流,一定要加上关闭,否则写入不成功
fos.close();
} catch (Exception e) {
// TODO: handle exception
}
}
//字符读取流
public static void readerFile() {
File file;
FileReader fr;
try {
//创建文件对象
file=new File("c:\\abc.txt");
//创建读取字符流
fr=new FileReader(file);
//创建读取字符流缓冲对象
BufferedReader br =new BufferedReader(fr);
String str=br.readLine();
while(str!=null){//换行可以读取出来
System.out.println(str);
str=br.readLine();
}
//关闭流:后用的先关闭,先用的后关闭
br.close();
fr.close();
} catch (Exception e) {
// TODO: handle exception
}
}
//字符写入流
public static void writerFile(String str) {
File file;
FileWriter fw;
try {
//创建文件对象
file=new File("c:\\abc.txt");
//创建写入字符流
//fw=new FileWriter(file);
fw=new FileWriter(file, true);//true追加,默认false覆盖重写
//创建写入字符流缓冲对象
BufferedWriter bw=new BufferedWriter(fw);
//写入操作
bw.write(str);//写入一个字符串
bw.append('我');//加入一个字符
//关闭流:后用的先关闭,先用的后关闭
bw.close();
fw.close();
} catch (Exception e) {
// TODO: handle exception
}
}
//读取二进制流
public static void binaryIn() {
File file;
FileInputStream fis;
try {
file=new File("c:\\abc.txt");
fis=new FileInputStream(file);
DataInputStream dis=new DataInputStream(fis);
byte[] bt=new byte[1024];
int i=dis.read(bt);
while(i!=-1){
System.out.println(i);
i=dis.read(bt);
}
} catch (Exception e) {
// TODO: handle exception
}
}
//写入二进制流
public static void binaryOut(){
File file;
FileOutputStream fos;
try {
file=new File("c:\\abc.txt");
fos=new FileOutputStream(file);
DataOutputStream dos=new DataOutputStream(fos);
byte[] bt=new byte[1024];
dos.write(bt);
} catch (Exception e) {
// TODO: handle exception
}
}
}
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 FileCopy {
private File inputFile;
private File outputFile;
private InputStream inputStream;
private OutputStream outputStream;
public FileCopy(String inputPath,String outputPath) throws FileNotFoundException{
inputFile=new File(inputPath);
outputFile=new File(outputPath);
inputStream=new FileInputStream(inputFile);
outputStream=new FileOutputStream(outputFile);
}
//一次性把数据全部读取到内存中来,再一次性写入
public void copy1() throws IOException{
byte b[]=new byte[(int)inputFile.length()];
inputStream.read(b); //一次性读入
outputStream.write(b); //一次性写入
// inputStream.close();
// outputStream.close();
}
//边读边写
public void copy2() throws IOException{
int temp=0;
while((temp=inputStream.read())!=-1){
outputStream.write(temp);
}
inputStream.close();
outputStream.close();
}
public File getInputFile() {
return inputFile;
}
public void setInputFile(File inputFile) {
this.inputFile = inputFile;
}
public File getOutputFile() {
return outputFile;
}
public void setOutputFile(File outputFile) {
this.outputFile = outputFile;
}
public static void main(String[] args) throws IOException{
String inputPath="e:"+File.separator+"Xfire.rar";
String outputPath="f:"+File.separator+inputPath.substring(inputPath.indexOf(File.separator));
FileCopy fileCopy=new FileCopy(inputPath, outputPath);
long start1=System.currentTimeMillis();
fileCopy.copy1();
long end1=System.currentTimeMillis();
System.out.println("一次性全部读入内存复制文件大小为"+fileCopy.getInputFile().length()+"位花费时间为:"+(end1-start1)+"ms");
fileCopy.getOutputFile().delete();
long start2=System.currentTimeMillis();
fileCopy.copy2();
long end2=System.currentTimeMillis();
System.out.println("边读边写复制文件大小为"+fileCopy.getInputFile().length()+"位花费时间为:"+(end2-start2)+"ms");
}
}
File相关的读取和写入以及复制的更多相关文章
- Java中IO流文件读取、写入和复制
//构造文件File类 File f=new File(fileName); //判断是否为目录 f.isDirectory(); //获取目录下的文件名 String[] fileName=f.li ...
- Apache commons-io实现单文件读取和写入
Apache commons-io提供了很多类,这里只介绍FileUtils类. FileUtils类提供了一些操作文件对象的实用方法,包括文件的读取.写入.复制和比较等. 比如逐句读取和写入一个文件 ...
- Java IO_003.Reader与Writer--字符流以及编码对数据的操作(读取与写入)
Java IO之Reader与Writer对象常用操作(包含了编码问题的处理) 涉及到文件(非文件夹)内容的操作,如果是纯文本的情况下,除了要用到File(见之前文章),另外就必须用到字符输入流或字符 ...
- 在线程中进行读取并写入文件和wenjia
新人求(胸)罩!!! import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException ...
- Java使用POI读取和写入Excel指南
Java使用POI读取和写入Excel指南 做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求: 网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃 ...
- GOEXIF读取和写入EXIF信息
最新版本的gexif,直接基于gdi+实现了exif信息的读取和写入,代码更清晰. /* * File: gexif.h * Purpose: cpp EXIF reader * 3/2/2017 & ...
- Java IO_002.InputStream与OutputStream--字节流对数据的操作(读取与写入)
Java IO之FileInputStream与FileOutputStream对象常用操作 涉及到文件(非文件夹)内容的操作,除了要用到File(见之前文章),另外就必须用到输入流或输出流. 输入流 ...
- Java使用POI读取和写入Excel指南(转)
做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求: 网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃,这里基于最新的Apache POI 4.0 ...
- Java读取、写入、处理Excel文件中的数据(转载)
原文链接 在日常工作中,我们常常会进行文件读写操作,除去我们最常用的纯文本文件读写,更多时候我们需要对Excel中的数据进行读取操作,本文将介绍Excel读写的常用方法,希望对大家学习Java读写Ex ...
随机推荐
- 函数式中的 currying
currying 是函数式语言中经常遇到的一个概念,翻译成 柯里化,不是库里化. currying 指的是将接收多个参数的函数变换成接收一个单一参数,并且返回接收余下的参数而且返回结果的新函数的技术. ...
- C和C++混合编程中的extern "C" {}
引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码: 1 2 3 4 5 6 7 8 9 #ifdef __cplusplus extern "C" { #endif ...
- 浅析“依赖注入(DI)/控制反转(IOC)”的实现思路
开始学习Spring的时候,对依赖注入(DI)——也叫控制反转(IOC)—— 的理解不是很深刻.随着学习的深入,也逐渐有了自己的认识,在此记录,也希望能帮助其他入门同学更深入地理解Spring.本文不 ...
- [转]搬瓦工教程之九:通过Net-Speeder为搬瓦工提升网速
搬瓦工教程之九:通过Net-Speeder为搬瓦工提升网速 有的同学反映自己的搬瓦工速度慢,丢包率高.这其实和你的网络服务提供商有关.据我所知一部分上海电信的同学就有这种问题.那么碰到了坑爹的网络服务 ...
- php 入门1
一.php在引入文件和js引入文件的区别 1.php在引入文件是用代码控制,而js是通过标签的属性src引入: 2.php引入可以在引入下写代码,而js是不可以的 3.静态效果的js可以引入的时间,引 ...
- Tyrion中文文档(含示例源码)
Tyrion是一个基于Python实现的支持多个WEB框架的Form表单验证组件,其完美的支持Tornado.Django.Flask.Bottle Web框架.Tyrion主要有两大重要动能: 表单 ...
- ssh 配合 tar 实现远程推送
tar命令和ssh配合使用 如何在空间不是很富裕的情况,把文件从一个分区tar到另外一个分区,其实还有很多办法的,使用管道命令就可以实现 如: #tar -cvf home |(cd /datavg3 ...
- java环境变量的设置
java安装好后需要配置一下环境变量,配置方法如下: 1.在系统变量里添加两条记录: 1)变量名:JAVA_HOME,变量值为java安装路径,如:C:\Program Files\Java\jdk1 ...
- LUA学习笔记三·时间等操作系统库
1.构造时间 2.时间制定格式输出 3.计时器(闭包)os.difftime (t2, t1) 返回以秒计算的时刻 t1 到 t2 的差值. (这里的时刻是由 os.time 返回的值). 在 POS ...
- cssSelector定位笔记1
cssSelector定位方法:1.使用class属性定位元素:driver.findElement(By.cssSelector("input.login"));即可以先指定一个 ...