FileReader和FileWriter
package com.qidian.lichen.character;
import java.io.*;
/**
* @Author ꒰ঌ(李ᆺ琛)໒꒱
* @Date 2022/9/18 13:23
* @Version 1.0
*/
public class CharacterTest {
public static void main(String[] args) {
Reader reader = null;
Writer writer = null;
try {
reader = new FileReader ("files\\新建文本文档.txt");
writer = new FileWriter ("files\\新建文本文档-copy.txt");
char[] buffer = new char[10];
int line;
while ((line = reader.read (buffer)) != -1) {
writer.write (buffer, 0, line);//字符流复制文件
}
} catch (IOException e) {
e.printStackTrace ();
} finally {
try {
if (reader != null) {
reader.close ();
}
if (writer != null) {
writer.close ();
}
} catch (IOException e) {
e.printStackTrace ();
}
}
}
}
BufferedReader和BufferedWriter
package com.qidian.lichen.character;
import java.io.*;
/**
* @Author ꒰ঌ(李ᆺ琛)໒꒱
* @Date 2022/9/18 13:46
* @Version 1.0
*/
public class BufferedTest {
public static void main(String[] args) {
Reader reader = null;
Writer writer = null;
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
try {
reader = new FileReader ("files\\高效字符流.txt");
writer = new FileWriter ("files\\高效字符流-copy.txt");
bufferedReader = new BufferedReader (reader);
bufferedWriter = new BufferedWriter (writer);
String str = null;
while ((str = bufferedReader.readLine ()) != null) {
bufferedWriter.write (str);
bufferedWriter.newLine ();//换行符
}
} catch (IOException e) {
e.printStackTrace ();
} finally {
try {
if (bufferedReader != null) {
bufferedReader.close ();
}
if (bufferedWriter != null) {
bufferedWriter.close ();
}
} catch (IOException e) {
e.printStackTrace ();
}
}
}
}
InputStreamReader和OutputStreamWriter
package com.qidian.lichen.character;
import java.io.*;
import java.nio.charset.StandardCharsets;
/**
* @Author ꒰ঌ(李ᆺ琛)໒꒱
* @Date 2022/9/18 14:10
* @Version 1.0
*/
public class ChangeTest {
public static void main(String[] args) {
InputStream in = null;
OutputStream out = null;
InputStreamReader reader = null;
OutputStreamWriter writer = null;
try {
in = new FileInputStream ("files\\字符转换流.txt");
out = new FileOutputStream ("files\\字符转换流-copy.txt");
reader = new InputStreamReader (in, StandardCharsets.UTF_8);
writer = new OutputStreamWriter (out,StandardCharsets.UTF_8);
char[] buffer = new char[1024];
int len = 0;
while ((len = reader.read (buffer)) != -1) {
writer.write (buffer, 0, len);
}
} catch (Exception e) {
e.printStackTrace ();
} finally {
try {
if (reader != null) {
reader.close ();
}
if (writer != null) {
writer.close ();
}
if (out != null) {
out.close ();
}
if (in != null) {
in.close ();
}
} catch (IOException e) {
e.printStackTrace ();
}
}
}
}
注意:字符流只能实现纯文本文件的复制,图片音频等文件需要使用字节流。字节流可以复制全部的文件,包括纯文本文件。