该博文是为文章http://blog.csdn.net/whardl_yu/article/details/53223807补充的代码示例。主要为输入输出流的一些基础操作。
功能:将指定的TXT文件复制一份。
类和方法:FileReader/FileWriter;read()/writer()
说明:1、为减少代码量,我选择直接抛出异常,而不是用try-catch-finally包裹(本文代码都是这样),实际操作中建议使用try-catch-finally包裹,close方法放在finally语句中。
2、TXT文件为纯文本文件,建议使用字符流。
代码:
public void copyTXT1() throws IOException {
FileReader reader = null;
FileWriter writer = null;
// 打开文件,创建流对象
reader = new FileReader("h://file.txt");
writer = new FileWriter("h://file2.txt");
// 处理流对象
int read;//存放read方法的返回值
while ((read = reader.read()) != -1) {// 返回值为-1, 表示到达流的末尾,读取结束。
writer.write(read);
}
// 在finally中关闭流对象,释放资源
if (reader != null) {
reader.close();
}
if (writer != null) {
writer.close();
}
功能:将指定的TXT文件复制一份。
类和方法:FileReader/FileWriter; read(char[] c)/writer(char[] c)
说明:与一所用的方法不同。
代码:
public void copyTXT2() throws IOException {
FileReader fr = null;
FileWriter fw = null;
//打开文件,创建流对象
fr = new FileReader("h://file.txt");
fw = new FileWriter("h://file3.txt");
//处理数据
char[] cbuf = new char[1024];
while(fr.read(cbuf) != -1) {
fw.write(cbuf);
}
//关闭流,释放资源。
fr.close();
fw.close();
}
功能:将指定的TXT文件复制一份。
类和方法:FileReader/FileWriter/BufferedReader/BufferedWriter ; readLine()/writer()
说明:用缓冲流包装。
代码:
public void copyTXT3() throws IOException {
FileReader fr = new FileReader("h://file2.txt");
//使用BufferedReader包装FileReader
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter("h://file4.txt");
//使用BufferedWriter包装FileReader
BufferedWriter bw = new BufferedWriter(fw);
String line;//存放readLine方法的返回值
while((line = br.readLine()) != null) {//readLine方法读到末尾的返回值为null,不是-1!
System.out.println(line);
bw.write(line);
//readLine方法的返回值不包含任何终止符,因此要写入一个行分隔符。
bw.newLine();
}
//关闭输出流前记得刷新
bw.flush();
//此时只用关闭缓冲流即可,被包装的流会自动关闭。
br.close();
bw.close();
}
功能:在指定TXT文件后面追加文字。
类:FileWriter
代码:
public static void main(String[] args) throws IOException {
FileWriter f = new FileWriter("H://file.txt", true);//true表示在文本最后追加
f.write("yuyuyu");
f.close();
}
功能:将指定的MP3文件复制一份。
类和方法:FileInputStream/FileOutputStream ;read(byte[] b)/writer(byte[] b)
说明:音频文件不是纯文本文件,不可以使用字符流。如果使用字符流,最后得到的文件不可用。
代码:
public void copyMp3() throws IOException{
FileInputStream fis = null;
FileOutputStream fos = null;
//打开文件,创建流对象
fis = new FileInputStream("h://欢乐颂.mp3");
fos = new FileOutputStream("h://欢乐颂2.mp3");
//处理数据
byte[] bbuf = new byte[1024];
while(fis.read(bbuf) != -1){// 返回值为-1, 表示到达流的末尾,读取结束。
fos.write(bbuf);
}
//关闭输入输出流,释放资源
fis.close();
fos.close();
}
功能:将指定的MP3文件复制一份。
类和方法:FileInputStream/FileOutputStream/BufferedOutputStream/BufferedInputStream ;read(byte[] b)/writer(byte[] b)
说明:用缓冲流包装。
代码:
public void copyMP3() throws IOException {
//创建流,并进行包装
FileInputStream fis = new FileInputStream("h://欢乐颂.mp3");
BufferedInputStream bis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream("h://欢乐颂3.mp3");
BufferedOutputStream bos = new BufferedOutputStream(fos);
byte[] bbuf = new byte[1024];
while(bis.read(bbuf) != -1) {
bos.write(bbuf);
}
//刷新
bos.flush();
//关闭流
bos.close();
bis.close();
}
功能:创建指定编码格式的文件。
类和方法:FileOutputStream/OutputStreamWriter/BufferedWriter
代码:
public void creatFile() throws IOException {
FileOutputStream fs = new FileOutputStream("h://newFile.txt");
OutputStreamWriter osw = new OutputStreamWriter(fs, "utf-8");
BufferedWriter bw = new BufferedWriter(osw);
bw.write("大家好!");
bw.flush();
bw.close();
}
功能:用指定的编码格式写入文件。
类和方法:FileInputStream/InputStreamReader/BufferedReader
代码:
public void openFile() throws IOException {
FileInputStream fis = new FileInputStream("h://newFile.txt");
InputStreamReader isr = new InputStreamReader(fis, "utf-8");
BufferedReader br = new BufferedReader(isr);
String s;
while((s = br.readLine()) != null) {
System.out.println(s);
}
br.close();
}