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 ...
随机推荐
- 【LeetCode】58.最后一个单词的长度
最后一个单词的长度 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最后一个单词,请返回 0 . 说明:一个单词是指由字母组成,但不包含任何空格的字符串. 示例 ...
- split("\\,")引起的java.lang.ArrayIndexOutOfBoundsException异常解决方案
由split("\,")引起的指标越界异常 如果字符串最后分隔符里的字段为空,使用split("\\,")进行切割时,最后的空字段不会切割 例如"a, ...
- protocol buffers 使用方法
protocol buffers 使用方法 为什么使用 Protocol Buffers 我们接下来要使用的例子是一个非常简单的"地址簿"应用程序,它能从文件中读取联系人详细信息. ...
- mysql connector c++ 1.1 API初步体验
mysql connector c++ 1.1 API初步体验 1,常用的头文件 #include <mysql_connection.h> #include <mysql_driv ...
- TCP协议如何保证可靠传输
TCP协议如何保证可靠传输 概述: TCP协议保证数据传输可靠性的方式主要有: (校 序 重 流 拥) 校验和: 发送的数据包的二进制相加然后取反,目的是检测数据在传输过程中的任何变化.如果收到段的检 ...
- 2019 SDN上机第一次作业
2019 SDN上机第一次作业 1. 安装轻量级网络仿真工具Mininet 安装Mininet的步骤 - git clone git://github.com/mininet/mininet - cd ...
- 前端/h5/React D3.js实现根据数据动态更新图形/类似进度实时变化效果
最近接到一个需求,在满足规则下,实现类似这种展示效果,其实就是用图形反映数据(NK,一种干扰值) 运行后,它其实是不断在动的,每格都可能显示灰色或者彩色 这里一共是10个格子,每格代表一个范围边界,说 ...
- Java常识2
JDK 的下载 安装 下载 官网 github安装 傻瓜式安装 JDK .JRE 注意问题 安装软件的 路径不能包含中文 空格 path环境变量 windows操作系统执行命令是所要搜寻的路径为什么要 ...
- [日常] NOI前划水日记
NOI前划水日记 开坑记录一下每天的效率有多低 5.24 早上被春哥安排了一场NEERC(不过怎么是qualification round啊) 省队势力都跑去参加THU/PKU夏令营了...剩下四个D ...
- 数组去重--ES6方法
数组去重方法1:用es6的set和...扩展运算符 let arr = [1,2,3,4,4,5,2]; console.log([...new Set(arr)]) // [1, 2, 3, 4, ...