读取字符使用Reader和Writer
reader读取
public static void main(String[] args) throws IOException{
try (BufferedReader reader = new BufferedReader(new FileReader("D:\\a.txt"));) {
reader.lines().forEach(System.out::println);
}
}
在try()的括号中写reader的定义语句,就不用在finally中关闭流,流会在try大括号{}内逻辑执行完成后自行关闭
writer写入
public static void main(String[] args) throws IOException{
try (BufferedReader reader = new BufferedReader(new FileReader("D:\\a.txt"));
FileWriter writer = new FileWriter("D:\\b.txt")) {
//换行符
String property = System.getProperty("line.separator");
reader.lines().forEach(str -> {
try {
writer.write(str);
writer.write(property);
} catch (IOException e) {
e.printStackTrace();
}
});
}
}
写入时,每次写一行数据,最后添加换行
读取字节使用InputStream和OutputStream
文件复制
public static void main(String[] args) throws IOException {
try (InputStream inputStream = new FileInputStream("D:\\a.png");
OutputStream outputStream = new FileOutputStream("D:\\b.png")) {
byte[] b = new byte[1024];
int i = 0;
while ((i = inputStream.read(b)) > 0) {
outputStream.write(b, 0, i);
}
}
}