Java I/O
package ersatz;
import org.junit.jupiter.api.Test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class Ersatz {
public static void main(String[] args) {
}
@Test
public void m1() {
int data = 0;
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream("d:/n2");
while ((data = fileInputStream.read()) != -1) {
System.out.println((char) data + " " + data);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
assert fileInputStream != null;
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test
public void m2() {
byte[] buffer = new byte[2];
int len = 0;
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream("d:/n2");
while ((len = fileInputStream.read(buffer)) != -1) {
System.out.println(new String(buffer, 0, len));
for (byte b : buffer) {
System.out.println(b);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
assert fileInputStream != null;
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test
public void m3() throws IOException {
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream("d:/n1", true);
// fileOutputStream.write(97788);
String s = "uiopvbn发生付款啦";
fileOutputStream.write(s.getBytes(StandardCharsets.UTF_8), 7, 3);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
assert fileOutputStream != null;
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test
public void m4() {
String src = "d:/a.png";
String dst = "d:/b.png";
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
try {
fileInputStream = new FileInputStream(src);
fileOutputStream = new FileOutputStream(dst);
byte[] buffer = new byte[1024];
int length = 0;
while ((length = fileInputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, length);
}
System.out.println("ok");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fileInputStream != null) fileOutputStream.close();
if (fileOutputStream != null) fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
FileReader
package ersatz;
import org.junit.jupiter.api.Test;
import java.io.FileReader;
import java.io.IOException;
public class Ersatz {
public static void main(String[] args) {
}
@Test
public void fileReader1() {
FileReader fileReader=null;
int data;
try {
fileReader = new FileReader("d:/courgette.log");
while ((data = fileReader.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if (fileReader != null) {
fileReader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test
public void fileReader2() {
FileReader fileReader=null;
int length=0;
char[] buffer = new char[8];
try {
fileReader = new FileReader("d:/courgette.log");
while ((length = fileReader.read(buffer)) != -1) {
System.out.print(new String(buffer, 0, length));
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if (fileReader != null) fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
FileWriter
package ersatz;
import java.io.FileWriter;
import java.io.IOException;
public class Ersatz {
public static void main(String[] args) {
FileWriter fileWriter=null;
char[] chars={'a', '发', '法', 'g'};
try {
fileWriter = new FileWriter("d:/n3",false);
fileWriter.write(98);
fileWriter.write(chars);
fileWriter.write("范德萨浪费".toCharArray(),0,3);
fileWriter.write("微软微软离开",0,2);
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
assert fileWriter != null;
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
BufferedWriter
public class BufferedWriter_ {
public static void main(String[] args) throws IOException {
String filePath = "e:\\ok.txt";
//创建BufferedWriter
//说明:
//1. new FileWriter(filePath, true) 表示以追加的方式写入
//2. new FileWriter(filePath) , 表示以覆盖的方式写入
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(filePath));
bufferedWriter.write("hello, 飞洒发生!");
bufferedWriter.newLine();//插入一个和系统相关的换行
bufferedWriter.write("hello2, 飞洒发生!");
bufferedWriter.newLine();
bufferedWriter.write("hello3, 飞洒发生!");
bufferedWriter.newLine();
//说明:关闭外层流即可 , 传入的 new FileWriter(filePath) ,会在底层关闭
bufferedWriter.close();
}
}
BufferedReader
public class BufferedReader_ {
public static void main(String[] args) throws Exception {
String filePath = "e:\\a.java";
//创建bufferedReader
BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));
//读取
String line; //按行读取, 效率高
//说明
//1. bufferedReader.readLine() 是按行读取文件
//2. 当返回null 时,表示文件读取完毕
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
//关闭流, 这里注意,只需要关闭 BufferedReader ,因为底层会自动的去关闭 节点流
//FileReader。
/*
public void close() throws IOException {
synchronized (lock) {
if (in == null)
return;
try {
in.close();//in 就是我们传入的 new FileReader(filePath), 关闭了.
} finally {
in = null;
cb = null;
}
}
}
*/
bufferedReader.close();
}
}
Buffered copy\
package ersatz;
import java.io.*;
public class Ersatz {
public static void main(String[] args) throws Exception {
String src = "d:/a.png";
String dst = "d:/c.png";
BufferedInputStream bufferedInputStream=null;
BufferedOutputStream bufferedOutputStream=null;
int data;
try {
bufferedInputStream = new BufferedInputStream(new FileInputStream(src), 1024);
bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(dst), 1024);
while ((data = bufferedInputStream.read()) != -1) {
bufferedOutputStream.write(data);
}
System.out.println("done");
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if (bufferedInputStream != null) bufferedInputStream.close();
if (bufferedOutputStream != null) bufferedOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public class BufferedCopy_ {
public static void main(String[] args) {
// 1. BufferedReader 和 BufferedWriter 是安装字符操作
// 2. 不要去操作 二进制文件[声音,视频,doc, pdf ], 可能造成文件损坏
// BufferedInputStream
// BufferedOutputStream
String srcFilePath = "e:\\a.java";
String destFilePath = "e:\\a2.java";
BufferedReader br = null;
BufferedWriter bw = null;
String line;
try {
br = new BufferedReader(new FileReader(srcFilePath));
bw = new BufferedWriter(new FileWriter(destFilePath));
// 说明: readLine 读取一行内容,但是没有换行
while ((line = br.readLine()) != null) {
// 每读取一行,就写入
bw.write(line);
// 插入一个换行
bw.newLine();
}
System.out.println("拷贝完毕...");
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭流
try {
if (br != null) {
br.close();
}
if (bw != null) {
bw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package com.hspedu.outputstream_;
import java.io.*;
/**
* @version 1.0
* 演示使用BufferedOutputStream 和 BufferedInputStream使用
* 使用他们,可以完成二进制文件拷贝.
* 思考:字节流可以操作二进制文件,可以操作文本文件吗?当然可以
*/
public class BufferedCopy02 {
public static void main(String[] args) {
// String srcFilePath = "e:\\Koala.jpg";
// String destFilePath = "e:\\hsp.jpg";
// String srcFilePath = "e:\\0245_Java_引出this.avi";
// String destFilePath = "e:\\hsp.avi";
String srcFilePath = "e:\\a.java";
String destFilePath = "e:\\a3.java";
//创建BufferedOutputStream对象BufferedInputStream对象
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
//因为 FileInputStream 是 InputStream 子类
bis = new BufferedInputStream(new FileInputStream(srcFilePath));
bos = new BufferedOutputStream(new FileOutputStream(destFilePath));
//循环的读取文件,并写入到 destFilePath
byte[] buff = new byte[1024];
int readLen = 0;
//当返回 -1 时,就表示文件读取完毕
while ((readLen = bis.read(buff)) != -1) {
bos.write(buff, 0, readLen);
}
System.out.println("文件拷贝完毕~~~");
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭流 , 关闭外层的处理流即可,底层会去关闭节点流
try {
if(bis != null) {
bis.close();
}
if(bos != null) {
bos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

浙公网安备 33010602011771号