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(); } } }