OtherStream
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.RandomAccessFile;
import java.io.Serializable;
import org.junit.Test;
public class TestOtherStream {
/**
*RandomAccessFile:支持随机访问
*1.可以充当一个输入流,又可以充当输出流(test3)
*2.支持文件的开头读取,写入,
*3.也可以支持从任意位置的的读取,写入(test4)
*
*支持随机
* @throws Exception
*/
@Test
public void test3() throws Exception{
File file = new File("hello.txt");
File file1 = new File("hello1.txt");
RandomAccessFile raf = new RandomAccessFile(file, "r");
RandomAccessFile raf1 = new RandomAccessFile(file1,"rw");
byte[] b = new byte[20];
int len;
while((len = raf.read(b)) != -1){
raf1.write(b, 0, len);
}
raf1.close();
raf.close();
}
//实现了覆盖的操作
@Test
public void test4() throws Exception{
File file = new File("hello.txt");
RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.seek(3);
raf.write("xy".getBytes());
}
//实现插入
@Test
public void test5() throws Exception{
File file = new File("hello1.txt");
RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.seek(4);
String str = raf.readLine();
raf.seek(4);
raf.write("xy".getBytes());
raf.write(str.getBytes());
}
//实现插入(复杂文件,也就是有多行)
@Test
public void test6() throws Exception{
File file = new File("hello1.txt");
RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.seek(4);
byte[] b = new byte[20];
int len;
StringBuffer sb = new StringBuffer();
while((len = raf.read(b)) != -1){
sb.append(new String(b,0,len));
}
raf.seek(4);
raf.write("xy".getBytes());
raf.write(sb.toString().getBytes());
}
//反序列号,将硬盘中的文件通过ObjectIntputStream转为相应的对象,存储到硬盘中
@Test
public void testObject1() throws Exception{
FileInputStream fis = new FileInputStream("/Users/lixiuming/Desktop/node/person.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
Person p1 = new Person();
p1 = (Person) ois.readObject();
Person p2 = new Person();
p2 = (Person) ois.readObject();
System.out.println(p1+"*******"+p2);
}
// 对象的序列化过程,讲内存中的对象通过ObjectOutputStream转化二进制流,存在硬盘中
@Test
public void testObject() {
Person p1 = new Person("小米", 20);
Person p2 = new Person("红米", 23);
ObjectOutputStream oos = null;
try {
FileOutputStream fos = new FileOutputStream("/Users/lixiuming/Desktop/node/person.txt");
oos = new ObjectOutputStream(fos);
oos.writeObject(p1);
oos.flush();
oos.writeObject(p2);
oos.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (oos != null) {
try {
oos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
// 用数据流来解析文件
@Test
public void testData1() throws Exception {
File file = new File("data.txt");
FileInputStream fis = new FileInputStream(file);
DataInputStream dis = new DataInputStream(fis);
// int len;
// byte[] b = new byte[20];
// while((len = dis.read(b)) != -1){
// String str = new String(b,0,len);
// System.out.println(str);
// }
String str = dis.readUTF();
Boolean b = dis.readBoolean();
long l = dis.readLong();
System.out.println("str:" + str + "," + "Bollean:" + b + "," + "long:" + b);
}
/**
* 数据流 ,用来处理基本数据类型,String , 字节数组的数据:DatainputStream,DataOutputStream
*
* @throws Exception
*/
@Test
public void testData() throws Exception {
FileOutputStream fos = new FileOutputStream("data.txt");
DataOutputStream dos = new DataOutputStream(fos);
dos.writeUTF("ksdflskdfhslkdf");
dos.writeBoolean(true);
dos.writeLong(123123);
dos.close();
fos.close();
}
/**
* 打印流(处理流),字节流,PrintStream 字符流,printWriter
*
* @throws Exception
*
*
*/
@Test
public void printSrtreamWriter() throws Exception {
File file = new File("hello7.txt");
FileOutputStream fos = new FileOutputStream(file);
// 设置打印位置
PrintStream ps = new PrintStream(fos, true);
System.setOut(ps);
for (int i = 0; i < 255; i++) {
System.out.print((char) i);
if (i % 50 == 0) {
System.out.println();// 换行
}
}
ps.close();
}
/**
* 标注的输入输出流 标准的输出流(字节流),System.in, 标准的输入流(字节流) System.out
* 键盘输入,把输入内容转化成大写,输出,当直接输入“e”或者“exit”时,退出程序
*
* @throws Exception
*/
@Test
public void test2() throws Exception {
InputStream is = System.in;
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String str = null;
while (true) {
System.out.print("请输入字符串:");
str = br.readLine();
if (str.equalsIgnoreCase("e") || str.equalsIgnoreCase("exit")) {
break;
} else {
String str1 = str.toUpperCase();
System.out.println(str1);
}
}
br.close();
isr.close();
is.close();
}
/**
* 转换流,InputStreamReader OutputStreamWriter 编码:将字符串转化为字节数组 解码:字节数组转化为字符串
*
*/

@Test
public void test1() throws Exception {
// 解码
File file = new File("hello3.txt");
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, "utf-8");
BufferedReader br = new BufferedReader(isr);
// 编码
File file2 = new File("hello6.txt");
FileOutputStream fos = new FileOutputStream(file2);
OutputStreamWriter osw = new OutputStreamWriter(fos, "utf-8");
BufferedWriter bw = new BufferedWriter(osw);
int len;
char[] c = new char[100];
while ((len = br.read(c)) != -1) {
// String str = new String(c,0,len);
// System.out.println(str);
bw.write(c, 0, len);
bw.flush();
}
bw.close();
osw.close();
fos.close();
br.close();
isr.close();
fis.close();
}
}
/**
* 要实现序列号的类, 要求是可序列化的:实现两个接口之一,Serializable
* 提供一个序列号,作用是:防止出错
* 不可序列号:static和transient修饰的成员变量
*/
class Person implements Serializable {
private static final long serialVersionUID = 1L;
String name;
int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
OtherStream的更多相关文章
- Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spa ...
- Flink DataStream API Programming Guide
Example Program The following program is a complete, working example of streaming window word count ...
- Spark Streaming官方文档学习--上
官方文档地址:http://spark.apache.org/docs/latest/streaming-programming-guide.html Spark Streaming是spark ap ...
- Flink Program Guide (2) -- 综述 (DataStream API编程指导 -- For Java)
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- Spark Streaming笔记——技术点汇总
目录 目录 概况 原理 API DStream WordCount示例 Input DStream Transformation Operation Output Operation 缓存与持久化 C ...
- Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南 | ApacheCN
Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized Streams (DStreams)(离散化流) Inp ...
- Spark Streaming编程指南
Overview A Quick Example Basic Concepts Linking Initializing StreamingContext Discretized Streams (D ...
- Spark Streaming中的操作函数分析
根据Spark官方文档中的描述,在Spark Streaming应用中,一个DStream对象可以调用多种操作,主要分为以下几类 Transformations Window Operations J ...
- Spark的Streaming和Spark的SQL简单入门学习
1.Spark Streaming是什么? a.Spark Streaming是什么? Spark Streaming类似于Apache Storm,用于流式数据的处理.根据其官方文档介绍,Spark ...
随机推荐
- 【BZOJ4001】[TJOI2015] 概率论(卡特兰数)
点此看题面 大致题意: 问你一棵\(n\)个节点的有根二叉树叶节点的期望个数. 大致思路 看到期望,比较显然可以想到设\(num_i\)为\(i\)个节点的二叉树个数,\(tot_i\)为所有\(i\ ...
- 32-1题:不分行从上到下打印二叉树/BFS/deque/queue
题目 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 考点 1.广度优先遍历 2.binary tree 3.queue 4.deque 思路 按层打印:8.6.10.5.7.9.11 用ST ...
- Iframe父子间元素操作
1.在父页面 获取iframe子页面的元素 (在同域的情况下 且在http://下测试,且最好在iframe onload加载完毕后 dosomething...) js写法 a.通过contentW ...
- 正则表达式-基础知识Review
正则表达式(Regular Expression)是计算机科学的一个概念. 正则表达式使用单个字符窜来描述.匹配一系列符合某个句法规则的字符窜. 在很多文本编辑器里, 正则表达式通常用来被检索替换哪些 ...
- node实现一个简单的聊天室(认识一下socket)
边学边理解node的高深,今天写了一个聊天室的demo,很简单,认识一下socket node服务端代码 var express = require('express'); var app = exp ...
- 在windows server 2008 64位服务器上配置php环境
1.安装windows2008 R2 46位 安装2008 R2 关键步骤,网上有很多诸如此类的安装介绍.在些南昌网站建设公司百恒网络工程师就不作详细介绍.关键是要选择适合实际应用的部署. 2. ...
- 【php】session_start 报 no such file
如果是yum安装修改php-fpm.conf 里面的 session.save_path 如果是编译的,修改php.ini 的session.save_path (此条未测试)
- CentOS6.7下的软件安装
一.JDK安装及其环境变量的配置 **创建一个专门安装软件的文件夹:mkdir /root/apps **解压安装包:tar -zxvf jdk-7u45-linux-x64.tar.gz -C /r ...
- python学习——StringIO和BytesIO
StringIO 很多时候,数据读写不一定是文件,也可以在内存中读写. StringIO顾名思义就是在内存中读写str. 要把str写入StringIO,我们需要先创建一个StringIO,然后,像文 ...
- 动态规划(入门,滚动数组,记录的都是状态):SWUSTACM-1010 魔兽争霸之最后的反击
题目: 1010: 魔兽争霸之最后的反击 Time Li ...