Java中的流是用于连接程序和设备之间的管道,主要用于数据传输;
1.流的分类
- 四大基本抽象流( 输入流(input) , 输出流 (ouput) , 字节流 , 字符流)
-还有 文件流 缓冲流 转换流 数据流 print流 object流
//字符输出流
FileReader reader = new FileReader("文件路径");
FileWriter writer = new FileWriter("文件路径");
int aa;//读取一个字符
while ((aa = reader.read()) != -1){
writer.write(aa);
System.out.print((char) aa);
}
writer.flush();
reader.close();//关闭输出流
writer.close();//关闭输入流
字节流
//字字节流输出流
FileInputStream reader = new FileInputStream("文件路径");
FileOutputStream writer = new FileOutputStream("文件路径");
int aa;//这里一次只读一个字节
while ((aa = reader.read()) != -1){
writer.write(aa);
System.out.print((char) aa);
}
writer.flush();
reader.close();//关闭输出流
writer.close();//关闭输入流
缓冲流
BufferedInputStream bufferes = new BufferedInputStream(new FileInputStream("文件路径"));
byte[] bytes = new byte[2048];//数字就是缓存区的大小,单位是字节
int aa;
aa = bufferes.read(bytes);
while (aa != -1){
bufferes.read(bytes,0,bytes.length);//为了防止最后一次写入数据长度与缓冲区不同
}
bufferes.close();//关闭流
数据流
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
DataOutputStream dataOutputStream = new DataOutputStream(byteArrayOutputStream);
long a = 1444444444;
dataOutputStream.writeLong(a);
byte[] bytes = byteArrayOutputStream.toByteArray();
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
DataInputStream dataInputStream = new DataInputStream(byteArrayInputStream);
Log.e("输出",dataInputStream.readLong() + "");
object流
//存入文件
FileOutputStream outputStream = openFileOutput("KK8.txt",MODE_PRIVATE);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
objectOutputStream.writeObject("对象,也可以是集合");
objectOutputStream.close();
//从文件取出
FileInputStream kk = openFileInput("KK8.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(kk);
try {
//取出转换为类对象
Naee naee1 = (Naee) objectInputStream.readObject();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
数据流
//创建数据输出流
DataOutputStream dos = new DataOutputStream(
new BufferedOutputStream(new FileOutputStream("文件的路径")));
byte a = 1;
char b = 'a';
int c = 2;
//使用数据输出流对象的方法写出数据到输出流
dos.write(a);
dos.write(b);
dos.write(c);
//关闭数据输出流
dos.close();
//创建数据输入流
DataInputStream dis = new DataInputStream(
new BufferedInputStream(new FileInputStream("文件的路径")));
//使用数据输入流的方法从输入流中读取数据
System.out.println(dis.readByte() + dis.readChar() + dis.readInt());
//关闭数据输入流
dis.close();
使用DataInputStream和DataOutputStream数据文件流的一般步骤:
① 创建字节文件流对象
② 基于字节文件流对象建立数据文件流对象
③ 用数据文件流对象的方法对基本类型的数据进行输入/输出
常用方法
File file = new File("文件的路径");
boolean exists = file.exists();//文件是否存在
String absolutePath = file.getAbsolutePath();//文件路径
boolean b = file.canRead();//文件是否可读
boolean b1 = file.canWrite();//文件是否可写
file.createNewFile();//创建新文件
boolean directory = file.isDirectory();//文件夹是否存在
boolean mkdir = file.mkdir();//创建文件夹
File[] files = file.listFiles();//显示文件的数组
abstract int read()
从输入流中读取数据的下一个字节。
int read(byte[] b)
从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
int read(byte[] b, int off, int len)
将输入流中最多 len 个数据字节读入 byte 数组。