字节输出流【OutputStream】
FileOutputStream类
写入数据到文件
/**
* 字节输出流写入数据到文件
*/
public class Demo1 {
public static void main(String[] args) throws IOException {
//1.创建一个FileOutputStream对象,构造方法中传递写入数据的目的地
FileOutputStream fos = new FileOutputStream("/Users/wym/a.txt");
//2.调用write方法,把数据写入到文件中
fos.write(98);
//3.释放资源
fos.close();
}
}
写多个字节到文件
public class Demo2 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream(new File("/Users/wym/b.txt"));
/*
一次写多个字节:
如果写得第一个字节是正数(0-127),那么显示的时候会查询ASCII表
如果写得第一个字节是负数,那第一个字节会和第二个字节组成一个中文显示
*/
//byte[] bytes = {65,66,67,68,69};
byte[] bytes = "你好".getBytes();
fos.write(bytes);
fos.close();
}
}
续写和换行
public class Demo3 {
public static void main(String[] args) throws IOException {
//追加写
FileOutputStream fos = new FileOutputStream("/Users/wym/b.txt",true);
//换行写 windows:\r\n Linux:\n Mac:\r
for(int i = 0;i < 10;i++){
fos.write("你好".getBytes());
fos.write("\r".getBytes());
}
fos.close();
}
}
字节输入流【InputStream】
FileInputStream类
读取字节数据
public class Demo1 {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("/Users/wym/b.txt");
int len;
while((len = fis.read()) != -1){
System.out.println(len);
}
fis.close();
}
}
读取多个字节
public class Demo2 {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("/Users/wym/b.txt");
//用数组作为缓冲
byte[] bytes = new byte[1024];
int len;
while((len = fis.read(bytes)) != -1){
System.out.println(new String(bytes,0,len));
}
fis.close();
}
}
文件复制练习
public class Copy {
public static void main(String[] args) throws IOException {
//创建字节输入流,绑定要读取的数据源
FileInputStream fis = new FileInputStream("/Users/wym/Downloads/默认头像.png");
//创建字节输出流,绑定要写入的目的地
FileOutputStream fos = new FileOutputStream("/Users/wym/默认头像.png");
//使用数组缓冲读取多个字节,提高效率
byte[] bytes = new byte[1024];
int len;
while((len = fis.read(bytes)) != -1){
fos.write(bytes,0,len);
}
//释放资源(后使用的先关闭)
fos.close();
fis.close();
}
}
网友评论