创作思路:首先准备好自己需要复制的文件内容,再将要复制的内容输出到文件中。其中用到了字节输入流和字节输出流以及通过字节数组来读取数据。
一,实现文件内容的复制
1,事先准备好的文件(a.txt)。
package homeWork;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class IOwk1 {
public static void main(String[] args) throws IOException {
File file=new File("a.txt");
file.createNewFile();
// 创建输出流
FileOutputStream fos = new FileOutputStream(file);
// 把String类型的字符串转化为byte数组保存在输出流中
fos.write("HelloJavaWorld你好世界 ".getBytes());
fos.flush();
fos.close();
}
}
2,将文件(a.txt)中的内容复制到文件(b.txt)中。
package homeWork;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class IOwk2 {
public static void main(String[] args) throws IOException {
//创建字节输入流对象
FileInputStream fis=new FileInputStream("a.txt");
//创建字节输出流对象
FileOutputStream fos=new FileOutputStream("b.txt");
//读取数据并写出数据
int len=0;
byte[] bytes=new byte[1024];
while ((len=fis.read(bytes))!=-1){
fos.write(bytes);
}
//释放资源
fis.close();
fos.close();
}
}
二,格式模版保存在文本文件pet.template中,要求按照模板格式保存宠物数据到文本文件,即把{name}、{type}、{master}替换为具体的宠物信息。
package zuoye;
import java.io.*;
public class IOwk {
public static void main(String[] args) throws IOException {
FileOutputStream fos=new FileOutputStream("pet.template");
fos.write("您好!我的名字是{name},我是一只{type}。我的主人是{master}".getBytes());
fos.close();
FileReader reader=new FileReader("pet.template");
StringBuffer sb=new StringBuffer();
int len=0;
char[] chars=new char[1024];
while ((len=reader.read(chars))!=-1){
sb.append(chars);
}
System.out.println("替换前:"+sb);
String str=sb.toString();
str=str.replace("{name}","欧欧");
str=str.replace("{type}","狗狗");
str=str.replace("{master}","李伟");
System.out.println("替换后:"+str);
reader.close();
}
结果实现: