文件IO流完成文件的复制(复杂版本主要用来演示各种流的用途,不是最佳复制方案哦)

package io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

 

public class FileReaderDemo {
public static void main(String[] args) {

String path = "D:\\eclipse\\workspace\\javase\\src\\io\\FileInputStreamDemo.java";
String outPah = "c:/ganbo.txt";

File f = new File("D:\\eclipse\\workspace\\javase\\src\\io\\FileInputStreamDemo.java");
File f2 = new File(outPah);

//节点流
FileInputStream fin = null;
FileOutputStream fo = null;

//包装流
InputStreamReader inr = null;
OutputStreamWriter bpw = null;

//缓冲流
BufferedReader br = null;
BufferedWriter bw = null;

try {
//实例化输入流
fin = new FileInputStream(f);
inr = new InputStreamReader(fin);
br = new BufferedReader(inr);

//实例化输出流
fo = new FileOutputStream(f2); //注意这里FileOutputStream()还有一个重载的方法,其参数后面加上 true and false 表示是追加还是覆盖写入
bpw = new OutputStreamWriter(fo);
bw = new BufferedWriter(bpw);

//开始复制
String temp;
while((temp=br.readLine())!=null){
System.out.println(temp);

/**
* 注意这里向文件中写出一行,默认一行行尾是没有回车换行的,需要我们手动添加 "\r\n";
* \r表示回车,也就是使光标移动到当行的开始位置
* \n表示使光标跳到当前行的下一行
* 一般就是 : "\r\n" 组合着用,其作用相当于键盘上面的 enter键
*/
bw.write(temp+"\r\n");
bw.flush();
}

} catch (Exception e) {
e.printStackTrace();
}finally{

//关闭资源
if(br!=null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}if(bw!=null){
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

}
}

时间: 2024-10-10 01:46:37

文件IO流完成文件的复制(复杂版本主要用来演示各种流的用途,不是最佳复制方案哦)的相关文章

文件IO其二

1.文件IO 文件IO属于linux系统中关于文件操作的系统调用,对于文件的操作也是跟标准IO一样,打开文件 > 操作文件 > 关闭文件. 文件IO和标准IO的比较:   标准IO 文件IO 代表打开的文件 文件流指针(FILE*) 文件描述符(fd) 打开文件/关闭文件 fopen/fclose open/close 读写操作 fputc/fgetc fputs/fgets fwrite/fread fprintf/fscanf read/write 读写操作 fseek/rewind/ft

Linux系统开发 2 文件IO open() close() read() write() perror() lseek() fcntl() ioctl()

[本文谢绝转载,原文来自http://990487026.blog.51cto.com] 大纲 Linux系统开发 man 文档的使用 文件IO open() 创建文件,指定权限位 open() 接收参数 创建文件 open() 传两个参数 第三个参数从内存取垃圾值 write()函数 向文件写数据 write()函数的覆盖操作 open()函数文件的追加 open() 创建文件,如果文件已经存在,就报错 测试一个程序最多能创建1021个文件,3个STDIN STDOUT STDERR已经存在了

嵌入式 Linux系统编程(一)——文件IO

嵌入式 Linux系统编程(一)--文件IO 一.文件IO概念 linux文件IO操作有两套大类的操作方式:不带缓存的文件IO操作,带缓存的文件IO操作.不带缓存的属于直接调用系统调用(system call)的方式,高效完成文件输入输出.它以文件标识符(整型)作为文件唯一性的判断依据.这种操作不是ASCI标准的,与系统有关,移植有一定的问题.而带缓存的是在不带缓存的基础之上封装了一层,维护了一个输入输出缓冲区,使之能跨OS,成为ASCI标准,称为标准IO库.不带缓存的方式频繁进行用户态 和内核

1.C与c++文件IO

一. C与c++文件IO 1.1文件类型:ASCII文件和二进制文件 首先我不保证文件类型只有这两种.但理解这两种文件对学习文件IO操作非常重要. 1.1.1ASCII文件 ASCII文件也就是文本文件,每个字节存放一个ASCII代码,代表一个字符.可以使用任何编辑器打开,如记事本或者UE等,打开就是你能看懂的字符.比如姓名"richard"就会存储为7个字节,每个字节分别为对应字母的ASCII码.整数10000就会被存为"10000",每个字节为每个字母的ASCI

文件IO(Linux系统调用)

与操作系统有关,所有文件都可操作,无缓冲区文件IO:常规文件,目录,字符设备,块设备,管道,套接口,符号连接 通过文件描述符访问文件,最多可打开1024个文件,文件描述符最大为1023. 标准输入.标准输出.标准出错 由shell默认打开,分别为0/1/2. 当打开一个文件时,内核会返回一个非负整数(一定是最小的且没有用过的),即文件描述符,用来代表打开的文件. int open(const char *pathname,int flags); int open(const char *path

标准文件IO详解(一)---文件IO操作和标准文件IO操作的区别

POSIX IO操作称为文件IO,也称为低级文件IO,是操作系统提供的系统调用,属于没有缓冲区的文件操作方式.执行该种操作后,内容会直接被写入到内核中的提供给磁盘的专门缓冲区中,内核会定期的刷新该缓冲区,将内容同步到磁盘当中. ANSI  C IO操作称为标准文件IO,也称为高级文件IO,是C库函数提供的,属于带有缓冲区的文件操作方式.执行该种操作后,内容首先会将内容写入到用户空间的缓冲区中,待缓冲区满或者需要刷新的时候再去调用文件IO,将内容写入到内核的磁盘缓冲区当中. 相比于低级文件IO,高

文件IO详解(三)---Linux虚拟文件系统

http://blog.chinaunix.net/uid-14735472-id-2921377.html 讲解虚拟文件系统的一些数据结构以及之间的关系,有些地方看不懂 http://www.docin.com/p-941544538.html 讲解了进程打开文件时内核所建立的各种数据结构之间的联系 在给磁盘分区后,每个分区中都可以建立起各自独立的文件系统,建立的物理文件系统可以是相同的,也可以是不同的.那么不同的物理文件系统的组织数据的方式肯定是不同的,比如说ext2文件系统组织数据的方式是

IO流的文件复制

1. IO流的分类 1.根据处理数据类型的不同分为: 字符流:1)Reader 读取字符流的抽象类 常用方法: read() 读取单个字符 read(char[] cbuf) 将字符读入数组. read(char[] cbuf, int off, int len) 将字符读入数组的某一部分. close() 关闭该流并释放与之关联的所有资源. 2)Writer 写入字符流的抽象类 常用方法:write(int c) 写入单个字符. write(String str) 写入字符串 write(St

使用IO流对文件夹的复制(文件夹中带有子目录)

当我们要复制带有子目录的文件夹的时候,就必须使用递归,这样才能把全部的文件夹都复制到位 思路和步骤: 对于文件夹的复制,分2种情况               (1)当我们对文件进行遍历的时候,如果目标文件夹下的文件是个标准文件的话,我们就可以直接去做复制的动作,               (2)当目标文件中,是带有文件夹的文件,那么这个时候就需要对文件夹进行递归,直到最后它是个标准文件后,我们在做复制动作 有了上述的2种情况后,那么这个需求,需要提供2种方法,1是对标准文件的复制,2是对带有