黑马程序员技术交流社区
标题:
如何实现复制一个文件
[打印本页]
作者:
王龙
时间:
2013-3-29 18:02
标题:
如何实现复制一个文件
将d盘下s1.txt复制到s2.txt,如何实现,求详细答案
我知道应该用到BufferedReader 和 BufferedWriter,但是没有思路
作者:
HM张健
时间:
2013-3-29 18:48
import java.io.*;
public class Copy {
public static void main(String[] args){
//此为1.7新功能可以自动关闭流
try(//创建输入流
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream("D:\\s1.txt")));
//创建输出流
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("D:\\s2.txt")));
){
String temp = "";
while((temp = br.readLine()) != null){
bw.write(temp,0,temp.length());
}
}
catch(IOException e){
System.out.println("您的文件不存在哦!");
e.printStackTrace();
}
}
}
复制代码
额 这个貌似是基础考题吧
作者:
程金
时间:
2013-3-30 14:14
HM张健 发表于 2013-3-29 18:48
额 这个貌似是基础考题吧
写入一行的时候 bw.write(temp)就可以了. 而且每写完一行要写入换行: bw.newLine() ,否则生成的文件里面缺少换行
作者:
王俊杰
时间:
2013-3-30 15:34
本帖最后由 王俊杰 于 2013-3-30 15:44 编辑
文件处理这一部分内容,我感觉要把
类的继承层次
弄清楚是比较重要的。
说一下我的理解吧,希望能够给你一定的启示 呵呵 我尽量从思路上来展开,而不是直接上代码,希望你理解
要复制一个文件,虽然不论是那种类型都可以用面向字节的流式输入输出来处理,但是java中专门提供了面向字符的输入输出流
我在附件提供了reader的继承层次,writer的跟它差不多。
根据你的问题,读取文本文件的思路是
用File对象作为输入源,构建FileReader对象,再用FileReader对象构建BufferedReader对象。写入文件也是一样的。
String src = "G:/src.txt";
String dest = "G:/dest.txt";
File srcFile = new File(src);
File destFile = new File(dest);
FileReader fileReader = new FileReader(srcFile);
FileWriter fileWriter = new FileWriter(destFile);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
BufferedReader bufferedReader = new BufferedReader(fileReader);
复制代码
下面开始读取源文件,同时写新文件
int ch;
while ((ch = bufferedReader.read()) != -1) {
bufferedWriter.write(ch);
}
复制代码
如果觉得不好理解,可以写成这样:
int ch = bufferedReader.read();
while (ch != -1) {
bufferedWriter.write(ch);
ch = bufferedReader.read();
复制代码
最后不要忘了关闭流。
bufferedReader.close();
bufferedWriter.close();
复制代码
希望能够给你一些有益的启示。祝共同进步!!
reader.PNG
(21.58 KB, 下载次数: 7)
下载附件
2013-3-30 15:10 上传
作者:
陈丽莉
时间:
2013-3-30 17:21
继续追问,或将帖子分类改成【已解决】哦~
作者:
谭辉
时间:
2013-3-30 17:22
拷贝文本文件
:
复制原理
:
将一个文件中的数据存储到另一个文件
步骤
:
1. 创建一个文件,用于存储要被复制文件中的数据
2. 定义读取流和文件关联
3. 通过不断的读写完成数据存储。
4. 关闭资源
import java.io.*;
public class CopyFileDemo {
public static void main(String[] args) {
copy_2();// 性能优
}
public static void copy_2() {
// 创建目的地
FileWriter fw = null;
// 与已有文件关联
FileReader fr = null;
// 定义一个字符数组,用于存储读到的字符
// 该read(char[] ch)方法返回的是读到的字符的个数
char[] ch = new char[1024];
int num = 0;
try {
fw = new FileWriter("C:\\Users\\lenovo\\Desktop\\copytest.txt");
fr = new FileReader("C:\\Users\\lenovo\\Desktop\\BlackHorse.txt");
while ((num = fr.read(ch)) != -1) {
fw.write(ch, 0, num);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {// 释放资源
if (fr != null)
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
if (fw != null)
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2