-
根据流的方向:
- 输入流(InputStream/Reader):从数据源读取数据到程序中。
- 输出流(OutputStream/Writer):将数据从程序写入到目的地。
-
根据流处理信息的大小:
- 字节流(Byte Streams):以字节为单位处理数据,适用于所有类型的数据传输,如二进制文件。
- 字符流(Character Streams):以字符为单位处理数据,通常用于文本数据的读写,内部会处理字符编码问题。
-
根据流的功能:
- 节点流(Node Streams):直接与特定的数据源或目的地相连的流,例如
FileInputStream
,FileOutputStream
,FileReader
, 和FileWriter
等。 - 处理流(Processing Streams):在其他流之上添加功能的流,比如缓冲、过滤、转换等。常见的处理流有
BufferedInputStream
,BufferedOutputStream
,BufferedReader
,BufferedWriter
,DataInputStream
,DataOutputStream
,ObjectInputStream
,ObjectOutputStream
等。
- 节点流(Node Streams):直接与特定的数据源或目的地相连的流,例如
例子
输入流和输出流的例子
- 字节流示例:
/**
* 字节缓冲流 ,完成 图片复制
* @param args
*/
public static void main2(String[] args) throws IOException {
//1.获得数据源对象:
File filei=new File("D:\\1.png");
File fileo=new File("E:\\new.png");
//2.获得管道对象,同时管理数据源:
FileInputStream fis=new FileInputStream(filei);
FileOutputStream fos=new FileOutputStream(fileo);
BufferedInputStream bis=new BufferedInputStream(fis);
BufferedOutputStream bos=new BufferedOutputStream(fos);
//3.读写:
byte[] bys=new byte[1024*8];
int i=bis.read(bys);
while(i!=-1){
bos.write(bys);
i=bis.read(bys);
}
//4.关闭:先开后关,关闭高级流,低级流回自动关闭
bos.close();
bis.close();
System.out.println("图片复制成功!");
}
- 字符流输出示例:
/**
* 字符流输出
* @param args
* @throws IOException
*/
public static void main1(String[] args) throws IOException {
//1.获得数据源对象:
File file=new File("E:\\dz15\\1.txt");
//2.获得流对象,同时连接数据源:
FileWriter fw=new FileWriter(file,true);
System.out.println("请输入你要存储的信息:");
Scanner input=new Scanner(System.in);
String str=input.next();
while(!str.equals("exit")){
//3.写入
fw.write(str);
fw.write("\n");
fw.flush();
System.out.println("请输入你要存储的信息:");
str=input.next();
}
//4.关闭:
fw.close();
System.out.println("退出程序!");
}
数据流和对象流的例子
数据流的例子
/**
* 数据流!
* 对存入和取出的数据保存,数据类型!
* @param args
*/
public static void main3(String[] args) throws IOException {
//控制台输入字符串,整数,小数,boolean 存入文件里,取出后,任然能做类型处理!
Scanner input=new Scanner(System.in);
String str=input.next();
int i=input.nextInt();
double dou=input.nextDouble();
boolean boo=input.nextBoolean();
File file =new File("E:\\dz15\\1.txt");
FileOutputStream fos=new FileOutputStream(file);
DataOutputStream dos=new DataOutputStream(fos);
dos.writeUTF(str);
dos.writeDouble(dou);
dos.writeBoolean(boo);
dos.writeInt(i);
FileInputStream fis=new FileInputStream(file);
DataInputStream dis=new DataInputStream(fis);
System.out.println(dis.readUTF().concat("..."));
System.out.println(dis.readDouble()+1);
System.out.println(dis.readBoolean()?"true":"false");
System.out.println(dis.readInt()+1);
fis.close();
fos.close();
}
对象流的例子
/**
* 对象流:将内存里的对象(属性)---一起写入文件里。---序列化;反序列化
* @param args
*/
public static void main4(String[] args) throws IOException, ClassNotFoundException {
//1.获得数据源对象:
File file =new File("E:\\dz15\\2.txt");
//2.获得管道对象 ,同时连接数据源:
FileOutputStream fos=new FileOutputStream(file);
ObjectOutputStream oos=new ObjectOutputStream(fos);
//3.写入:
Person person=new Person();
person.setSal(9000.0);
person.setAge(34);
person.setId("23456");
person.setName("张三");
oos.writeObject(person);
//4.关闭:
oos.close();
System.out.println("写出成功");
System.out.println("==============");
//2.获得管道流对象 同时关联数据源:
FileInputStream fis=new FileInputStream(file);
ObjectInputStream ois=new ObjectInputStream(fis);
//3.读取:
Person person1 = (Person)ois.readObject();
System.out.println(person1);
//4.关闭:
ois.close();
}
喜欢这期内容的话,别忘了点个赞,关注博主,这样就不会错过任何更新啦!还有,收藏一下,方便以后回顾哦!
标签:java,File,数据源,System,io,println,new,out From: https://blog.csdn.net/weixin_62951914/article/details/144627886