字节流
字节流: 万能流
IO流中的核心
字节输入流:
InputStream
流向:输入流
操作单元:字节流
功能:节点流
此抽象类是表示字节输入流的所有类的超类 不能实例化
示例:
InputStream is = new FileInputStream(src);
FileInputStream(文件输入流)
是用来读文件数据的流,所以它需要一个文件对象用来实例化,这个文件可以是一个File对象,也可以是文件名路径字符串.【这里文件不存在会抛错】
从文件系统中的某个文件中获得输入字节
read() 每次从输入流中读入一个字节的内容,想要读入多个 手动一个字节一个字节读入
int read(byte[] b) 按字节数组依次读入
输出流
OutputStream
流向:输出流
操作单元:字节流
功能:节点流
此抽象类是表示字节输出流的所有类的超类 不能实例化
FileInputStream(文件输出流)
写文件数据的流
代码:
字节输入流 1
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/**
* @author 黑羽-孤高之银风
* 第一个程序:理解操作步骤
* 文件字节输入流1
* 1.创建源
* 2.选择流
* 3.输入输出
* 4.关闭
*
*/
public class IOTest01 {
public static void main(String[] args) {
//1.创建源
File src = new File("abc.txt");
//2.选择流
try {
InputStream is = new FileInputStream(src);
//3.操作(读取)
int data1 = is.read();//第一个数据h
int data2 = is.read();//第二个数据e
int data3 = is.read();//第三个数据l
int data4 = is.read();//第四个数据 ???没有
System.out.println((char)data1);//h
System.out.println((char)data2);//e
System.out.println((char)data3);//l
System.out.println(data4);//返回-1
//4.释放资源
is.close();
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
文件字节输入流2
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/**
* @author 黑羽-孤高之银风
* 文件字节输入流2
* 1.创建源
* 2.选择流
* 3.输入输出
* 4.关闭
*
*/
public class IOTest02 {
public static void main(String[] args) {
// 1.创建源
File src = new File("abc.txt");
// 2.选择流
InputStream is = null;
try {
is = new FileInputStream(src);
// 3.操作(读取)
int temp;
while ((temp = is.read()) != -1) {
System.out.print((char) temp);// hel
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 4.释放资源
try {
if (is != null) {// 避免空指针异常
is.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
文件字节输入流3
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/**
* @author 黑羽-孤高之银风
*
* 文件字节输入流3
* 1.创建源 2.选择流 3.输入输出 4.关闭
*/
public class IOTest03 {
public static void main(String[] args) {
// 1.创建源
File src = new File("abc.txt");
// 2.选择流
InputStream is = null;
try {
is = new FileInputStream(src);
// 3.操作(分段读取)
修改内容
byte[] flush = new byte[1024];// 缓冲容器
int len = -1;// 接收长度
while ((len = is.read(flush)) != -1) {
// 字节数组字符串解码
String str = new String(flush, 0, len);
System.out.println(str);// hello world
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 4.释放资源
try {
if (is != null) {// 避免空指针异常
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
文件字节输出流
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
/**
* @author 黑羽-孤高之银风
* 文件字节输出流
* 1.创建源
* 2.选择流
* 3.操作(写出内容)
* 4.释放资源
*
*
*
*/
public class IOTest04 {
public static void main(String[] args) {
//1.创建源
File src = new File("newdesk.txt");//没有则生成新文件 //input必须有
//2.选择流
OutputStream os = null;
try {
os = new FileOutputStream(src);//这里添加,true 可以 继续写在文件后面 不写则每次替换原文件
//3.操作(写出)
String msg = "hahahaha";
byte[] datas = msg.getBytes();//字符串>>字节数组 编码
os.write(datas, 0, datas.length);
os.flush();//习惯性打
} catch (Exception e) {
}finally {
//释放资源
try {if (os!=null) {
os.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}