java--标准输入输出流
//读取键盘录入的数据写到a.txt
//方式一
private static void method() throws IOException {
//创建输入流对象
InputStream is = System.in;
Reader r = new InputStreamReader(is);
//创建输出流对象
FileWriter fw = new FileWriter("a.txt");
//读取数据
byte[] bys = new byte[1024];
int len;
while((len = is.read(bys))!=-1)
{
fw.write(new String(bys, 0, len));
fw.flush();
}
fw.close();
is.close();
}
//方式二
private static void method2() throws IOException {
//创建输入流对象
InputStream is = System.in;
Reader r = new InputStreamReader(is);
//创建输出流对象
FileWriter fw = new FileWriter("a.txt");
//读取数据
char[] chs = new char[1024];
int len;
while((len = r.read(chs))!=-1)
{
fw.write(chs, 0 , len);
fw.flush();
}
fw.close();
r.close();
}
// 将文件中的数据输出到控制台
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
//OutputStream os = System.out;
//Writer w = new OutputStreamWriter(System.out);
//BufferedWriter bw = new BufferedWriter(w);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String line;
while((line = br.readLine())!=null)
{
bw.write(line);
bw.newLine();
}
bw.close();
br.close();
//使用打印流复制文本文件
private static void method3() throws FileNotFoundException, IOException {
//创建输入流对象
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
//创建打印流对象
PrintWriter pw = new PrintWriter(new FileWriter("b.txt"),true); // 此处true,是自动刷新
String line;
while((line = br.readLine())!=null)
{
pw.println(line);
}
pw.close();
br.close();
}
//使用字节流进行文件的复制(复制二进制文件)
private static void method() throws FileNotFoundException, IOException {
FileInputStream fis = new FileInputStream("这里是一个文件名");
FileOutputStream fos = new FileOutputStream("另一个问件名");
// 一次读一个字节
// int by;
// while((by = fis.read() ) !=-1){
// fos.write(by);
// }
// 一次读取一个字符数组
int len;
byte[] bys = new byte[1024];
while((len = fis.read(bys))!=1){
fos.write(len);
}
fis.close();
fos.close();
}
对象操作流
可以用于读写任意类型的对象
ObjectOutputStream :对象输出字符流
WriteObject
ObjectInputStream :对象输入字符流
ReadObject
注意:
使用对象输出流写出对象,只能使用对象输入流来读取对象
只能将支持java.io.Serializable 接口的对象写入流中
Serializable:序列号,是一个标识接口,只起表示作用,没有方法
当一个类的对象需要进行IO流进行读写的时候,这个类必须实现此接口
//eg:创建用于文件读写的学生类对象
public class Student implements Serializable{
private static final long serialVersionUID = -4114259825335049236L; // 固定序列号
String name;
int age;
public Student(String name,int age) {
this.age = age;
this.name = name;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
//将学生对象写入文件
private static void method() throws IOException, FileNotFoundException {
//创建对象输出流的对象
//FileOutputStream fos = new FileOutputStream("a.txt"); // 字节输出流
//ObjectOutputStream oos = new ObjectOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("a.txt"));
//创建学生对象
Student s = new Student("zhangsan", 18);
Student s2 = new Student("lisi",19);
//写出学生对象
oos.writeObject(s);
oos.writeObject(s2);
//释放资源
oos.close();
}
//将文件中的学生对象读取出来
private static void method2() throws IOException, FileNotFoundException, ClassNotFoundException {
//创建对象输入流的对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("a.txt"));
/* //读取对象
java.lang.Object obj = ois.readObject();
System.out.println(obj);
java.lang.Object obj2 = ois.readObject();
System.out.println(obj2);
java.lang.Object obj3 = ois.readObject();
System.out.println(obj3);*/
try{
while(true)
{
java.lang.Object obj = ois.readObject();
System.out.println(obj);
}
} catch(EOFException e){
System.out.println("读到了文件的末尾");
}
//释放资源
ois.close();
}
// 另一种方式写入
private static void method3() throws IOException, FileNotFoundException {
// 另一种写入对象文件的方式(将所有对象写入到集合对象中)
//创建对象输出流对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("b.txt"));
//创建集合对象
ArrayList<Student> list = new ArrayList<Student>();
//添加学生对象
list.add(new Student("wangwu", 19));
list.add(new Student("zhaoliu", 20));
//写出集合对象
oos.writeObject(list);
//释放资源
oos.close();
}
//另一种读取方式
private static void method4() throws IOException, FileNotFoundException, ClassNotFoundException {
//创建对象输出流对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("b.txt"));
//读取数据
java.lang.Object obj = ois.readObject();
//System.out.println(obj);
// 向下转型,获取具体的子类对象
ArrayList<Student> list = (ArrayList<Student>) obj;
for(Student stu:list)
{
System.out.println(stu);
}
//释放资源
ois.close();
}
java--标准输入输出流的更多相关文章
- Java标准输入输出流的重定向及恢复
在Java中输入输出数据一般(图形化界面例外)要用到标准输入输出流System.in和System.out,System.in,System.out默认指向控制台,但有时程序从文件中输入数据并将结果输 ...
- java 标准输入输出流,打印流,数据流
1 package stream; import static org.junit.Assert.assertNotNull; import java.io.BufferedReader; impor ...
- 黑马程序员——JAVA基础之标准输入输出流
------- android培训.java培训.期待与您交流! ---------- 标准输入输出流: System中的基本字段,in,out 它们各代表了系统标准的输入和输出设备. 默认输入设备是 ...
- Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)
1.操作基本数据类型的流 1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出 ...
- Java精选笔记_其他IO流(ObjectInputStream、DataInputStream、PrintStream、标准输入输出流)
其他IO流 ObjectInputStream和ObjectOutputStream 如果希望永久将对象转为字节数据写入到硬盘上,即对象序列化,可以使用ObjectOutputStream(对象输出流 ...
- Java IO流-标准输入输出流
2017-11-05 19:13:21 标准输入输出流:System类中的两个成员变量. 标准输入流(public static final InputStream in):“标准”输入流.此流已打开 ...
- JAVA输入输出流
概述: 各种流类型(类和抽象类)都位于位于java.io包中,各种流都分别继承一下四种抽象流中的一种: 类型 字节流 字符流 输入流 InputStream Reader 输出流 OutputStre ...
- IO流(三)__字节流 标准输入输出流 转换流
一.字节流:FileInputStream 和FileOutputStream 基本操作和字符流类相同,没有flush,但是close还是要的 复制一个字节流文件 private static voi ...
- Java输入/输出流体系
在用java的io流读写文件时,总是被它的各种流能得很混乱,有40多个类,理清啦,过一段时间又混乱啦,决定整理一下!以防再忘 Java输入/输出流体系 1.字节流和字符流 字节流:按字节读取.字符流: ...
- freopen()——重定向标准输入输出流
freopen()——重定向标准输入输出流 头文件:stdio.h 函数原型:FILE * freopen(const char *filename , const char *type , FIL ...
随机推荐
- HTTP协议解析之Cookie
" Cookie与身份认证." 提到HTTP协议,不可避免地都会牵涉到Cookie,可以说,Cookie作为HTTP的重要组成部分,促进了HTTP协议的发展壮大. HTTP协议如果 ...
- 安卓开发笔记(三十五):Cardview的简单使用
首先上图: 我们可以看到上面这个我所编写的界面上,战狼这一个模块则使用了cardview控件,下面我们来看看它是怎么使用的:这里是cardview在线性布局下的的布局代码: <android.s ...
- Smobiler针对百度文字识别SDK动态编译与运行
下载百度ocr 在百度ocr平台下载android资源文档 文档地址:https://ai.baidu.com/docs#/OCR-Android-SDK/top sdk下载地址:http://ai. ...
- python生产者和消费者模式实现(二)多进程方式
import timeimport randomfrom multiprocessing import Process, Queue # 生产者def producer(q, i): food = ' ...
- VM虚拟机Android安装图形界面
摘自,转 https://blog.csdn.net/weixin_42633191/article/details/89391188
- golang中的struct标签tag
这个以前用beego时涉及过,时间久了,就忘了. 现在k8s里的controller,一样用了这个语法, 再拾起来吧. http://www.01happy.com/golang-struct-tag ...
- pyquery解析库
这一篇整理一下pyquery这个解析库.还是菜,若有错误的地方,欢迎大家随时指正.......(come on.......) pyquery:是一个css选择器,再使用时,也需要传入HTML文本来初 ...
- day6_logging模块
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/7/11 9:12 # @Author : 大坏男孩 # @File : da ...
- RabbitMQ的消息传输保障三个层级
这里只简单介绍一下三个层级,笔记摘录自<RabbitMQ实战指南>朱忠华作者 消息可靠传输一般是业务系统接入消息中间件时候首要考虑的问题,一般消息中间件的消息传输保障分为三个层级 1 A ...
- 如何对jmeter设置IP欺骗
由于服务器出于安全考虑会对同一IP地址做过滤,所以如果想要达到正常的压测效果,我们需要在发请求时伪造出不同的IP地址.主要步骤分为以下3步:第一步:在负载机上绑定IP地址. 第二步:在要欺骗的http ...