package mooc;
import java.io.IOException;
/*
* 回车汉子代表两个字节,一个字符
*/
public class stream {
public static void main(String[] args){
System.out.println("Hello world");
byte[] buffer = new byte[1024];
try {
int len = System.in.read(buffer);
String s = new String(buffer,0,len);
System.out.println("读到了多少字节"+len);
System.out.println(s);
System.out.println("s的长度是"+s.length());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package mooc;
//文件的读和写 现在很少用了
import java.util.Scanner;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;//Data用以读写二进制方式表达的基本数据类型的数据 如int等基本数据类型
import java.io.DataOutputStream;
import java.io.FileInputStream;//文件输入流//只能处理字节 二进制文件
import java.io.FileNotFoundException;
import java.io.FileOutputStream;//文件输出流
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
public class filestream {
public static void main(String[] args){
// System.out.println("Hello world 下面是文件字节流操作");
// byte[] buf = new byte[10];
// for(int i = 0 ;i<buf.length;i++){
// buf[i] = (byte)i;
// }
// try {
// /*在当前目录下新建一个文件,如果这个文件有,就
// 清空原本的内容然后写入心内容,如果没有,就新建一个文件*/
// FileOutputStream out = new FileOutputStream("a.dat");
// try {
// out.write(buf);
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// try {
// out.close();
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// } catch (FileNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// System.out.print("下面是流过滤器");
// try {
// DataOutputStream out = new DataOutputStream(
// new BufferedOutputStream(
// new FileOutputStream("a.dat")));
// /*有了DataOutputStream之后我们写的东西就不仅仅是字节了,DataOutputStream
// 我们要接在一个字节流之上并且中间要有一个缓冲器 也可以说成是一个基于一FileOutput
// Stream的BufferedOutputStream*/
// int i = 0xcafebabe;
// out.writeInt(i);
// out.close();
// DataInputStream in = new DataInputStream(
// new BufferedInputStream(
// new FileInputStream("a.dat")));
// int j = in.readInt();//从in里读一个int
//
// } catch (FileNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
//
//
// /*在流上建立文本处理 Reader和Writer是用来处理Unicode编码的文件的如果
// 如果文件本身是用Unicode编码的,则我们可以用Reader和Write直接进行读写,
// 如果文件本身并不是Unicode,文件本身可能是accisc码,文件本身可能是国标码,
// 或者就算用的是Unicode,也可能用的是UTF-8这样的编码形式,所以在这种文件本身
// 并不是Unicode编码时,我们需要借助Stream,我们需要通过Stream去打开那个文件,
// 然后在Stream的基础上,以过滤流或者说是过滤器的方式去建立Reader和Writer来实现
// 文本的输入和输出所有我们常见的做法是这样的。*/
// System.out.print("下面是通过流过滤器来写文本");
// try {
// PrintWriter out = new PrintWriter(
// new BufferedWriter(//Writer缓冲器
// new OutputStreamWriter(/*这是一个桥梁,
// 构建起了Stream和Writer之间的一个桥梁,他的输入时Stream
// 它的输出就是一个Wirter*/
// new FileOutputStream("a.txt"))));
// /*有了DataOutputStream之后我们写的东西就不仅仅是字节了,DataOutputStream
// 我们要接在一个字节流之上并且中间要有一个缓冲器 也可以说成是一个基于一FileOutput
// Stream的BufferedOutputStream*/
// int i = 123456;
// out.println(i);//有了PrintWriter之后我们可以做的事情
// out.close();
// /*Reader 常用的是BufferedReader readLine()能够将文本按照行
// * 整行地读进来
// * 还有LineNumberReader 可以得到行号getLineNumer(),在行号中跳转
// * Reader中还有一个FileReader,它直接就是InputStreamReader的子类
// * 它自己就能在一个二进制的或者说非unicode的文件中建立起一个流,然后最后
// * 形成一个reader,对于文件来说,FileReader很好用
// */
// BufferedReader in = new BufferedReader(
// new InputStreamReader(
// new FileInputStream("src/mooc/filestream.java")));
// String line;
// while((line=in.readLine())!=null){
// //readLine是文件读取返回String,当读到文件末尾的时候会返回null
// System.out.println(line);
// }
// in.readLine();//
// } catch (FileNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
/*UTF-8编码,UTF编码是用两个字节来表示一个字符,但是因为在英文的文档中,
* 大家都是assic码字符用一个字节就可以表达,UTF-8就是说如果你是英文字符,
* 例如字母abcd和数字1234那么,我就用一个字节来表达,如果你是不常见的汉字我可能用三个字节
* 来表达你一个汉字,这样的编码形式就是UTF-8,它即采用了Unicode编码,保证了在任何平台上
* 都能用的可移植性
* 补充:Unicode码也是一种国际标准编码,采用二个字节编码,
* 与ASCII码不兼容。目前,在网络、Windows系统和很多大型软件中得到应用。*/
System.out.println("下面是关于文本编码若干问题");
try {
PrintWriter out = new PrintWriter(
new BufferedWriter(//Writer缓冲器
new OutputStreamWriter(/*这是一个桥梁,
构建起了Stream和Writer之间的一个桥梁,他的输入时Stream
它的输出就是一个Wirter*/
new FileOutputStream("a.txt"))));
/*有了DataOutputStream之后我们写的东西就不仅仅是字节了,DataOutputStream
我们要接在一个字节流之上并且中间要有一个缓冲器 也可以说成是一个基于一FileOutput
Stream的BufferedOutputStream*/
int i = 123456;
out.println(i);//有了PrintWriter之后我们可以做的事情
out.close();
/*Reader 常用的是BufferedReader readLine()能够将文本按照行
* 整行地读进来
* 还有LineNumberReader 可以得到行号getLineNumer(),在行号中跳转
* Reader中还有一个FileReader,它直接就是InputStreamReader的子类
* 它自己就能在一个二进制的或者说非unicode的文件中建立起一个流,然后最后
* 形成一个reader,对于文件来说,FileReader很好用
*
*/
BufferedReader in = new BufferedReader(
new InputStreamReader(/*这里的InputstreamReader就是要把你刚才读到的
字节形式的转化成文本形式,如果你不给出编码方式,他就用系统默认的编码
方式,如文本是GBK,所以我们可以通过加一个编码参数,才解决读取UTF8的问题*/
new FileInputStream("utf8.txt"),"utf8"));
/*为什么当文件是UTF8时我们就读不出来了呢,是因为Eclipse环境中汉字的编码默认告诉的
* 是GBK国标,但是你实际的文件并不是国标的 */
String line;
while((line=in.readLine())!=null){
//readLine是文件读取返回String,当读到文件末尾的时候会返回null
System.out.println(line);
}
in.readLine();//
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package mooc;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Serializable;
/*对象串行化,读写类 用到了
* ObjectInputStream类 readObject()
* ObjectOutputStream类 writeObject()
* Serializable接口
*/
class Student implements Serializable{//可以被串行化的类
private String name;
private int age;
private int grade;
public Student(String name,int age,int grade){
this.name = name;
this.age = age;
this.grade = grade;
}
public String toString(){
return name+" "+age+""+grade;
}
}
public class streamzongheyingyong {
public static void main(String[] args){
Student s1 = new Student("John",18,5);
System.out.println(s1);
try {
ObjectOutputStream out =
new ObjectOutputStream(
new FileOutputStream
("obj.dat"));
out.writeObject(s1);
out.close();
ObjectInputStream in =
new ObjectInputStream
(new FileInputStream("obj.dat"));
Student s2 = (Student)in.readObject();
System.out.println(s2);
System.out.println(s1==s2);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}