-
in.read(buf,0,buf.length)查看全部
-
输入输出流的主要方法查看全部
-
gbk编码中文占用两个字节,英文占用一个字节 utf-8编码中文占用三个字节,英文占用一个字节 java是双字节编码 utf-16be 中文两个字节,英文也是两个字节 当你的字符序列是某种编码时,这个时候想把字节序列变成字符串,也需要使用这种编码方式,否则会乱码 文本文件,就是字节序列,可以是任意编码的字节序列,如果我们在中文机器上创建文本文件,该文本文件只认识ansi编码查看全部
-
gbk编码中文占2个字节,英文占1个字节, utf-8编码,中文占用3个字节,英文占用1个字节 java是双字节编码utf-16be 该编码中文和英文都是2个字节 当字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码 文本文件可以是任意编码的字节序列 如果我们是在中文机器上直接创建文本文件,那么该文本文件只认识ANSI编码。(联通、联这是一种巧合,他们正好符合了utf-8编码的规则。)中文系统下:ANSI编码代表GBK编码。 Eclipes中什么样子的编码项目就只认识该编码的文字,换一种编码就会出现乱码。查看全部
-
javaIO输入输出流查看全部
-
javaIO输入输出流查看全部
-
IO——对象的序列化和反序列化 一、概念 1、对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化 2、序列化流(ObjectOutputStream),字节的过滤流 —— writeObject()方法 反序列化流(ObjectInputStream) —— readObject()方法,读出来是object类 记得转换 3、序列化接口(Serializable) 对象必须实现序列化接口,才能进行序列化,否则将出现异常。 这个接口,没有任何方法,只是一个【标准】查看全部
-
字符流的过滤器: BufferedReader readLine 一次读一行 BufferedWriter/PrintWriter 写一行 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.*; public class BrAndBwOrPwDemo { public static void main(String[] args)throws IOException { //对文件进行读写操作 BufferedReader br=new BufferedReader( new InputStreamReader( new FileInputStream("D:\\javaio\\imooc.txtx"))); /*BufferedWriter bw=new BufferedWriter( new OutputStreamWriter( new FileOutputStream("D:\\javaio\\imooc3.txt")));*/ PrintWriter pw=new PrintWriter("D:\\javaio\\imooc4.txt"); //PrintWriter pw1=new PrintWriter(outputStream,boolean autoFlush); String line; while((line=br.readLine())!=null){ System.out.println(line); //一次读一行,并不能识别换行 /*bw.write(line); //单独写出换行操作 bw.newLine(); //换行操作 bw.flush();*/ pw.println(); pw.flush(); } br.close(); //bw.close(); } }查看全部
-
package com.IO; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class FrAndFwDemo { public static void main(String[] args) throws IOException { FileReader fr=new FileReader("D:\\javaio\\imooc.txt"); FileWriter fw=new FileWriter("D\\javaio\\imooc2.txt",true); char[] buffer=new char[2056]; int c; while((c=fr.read(buffer,0,buffer.length))!=-1){ //读文件,读到-1就结束 fw.write(buffer,0,c); fw.flush(); } fr.close(); fw.close(); } }查看全部
-
5.字符流:字符流分为输出流(Reader)和输出流(Writer)。操作的是文本文件。 字符处理,一次处理一个字符 字符处理底层还是基本的字节序列 InputStreamReader:完成byte流解析为char流,按照编码解析 FileInputStream in = new FileInputStream("e:\\javaio\\imoocutf8.txt"); //获取字符输入流 InputStreamReader isr = new InputStreamReader(in,"utf-8");//默认项目的编码,操作的时候,要写文件本身的编码格式 OutputStreamWriter:提供char流到byte流,按照编码处理 FileOutputStream out = new FileOutputStream("e:\\javaio\\imoocutf81.txt"); //获取字符输出流 OutputStreamWriter osw = new OutputStreamWriter(out,"utf-8"); FileReader/FileWriter:可以直接写文件名的路径。与InputStreamReader相比坏处:无法指定读取和写出的编码,容易出现乱码。 FileReader fr = new FileReader("e:\\javaio\\imooc.txt"); //输入流 FileWriter fw = new FileWriter("e:\\javaio\\imooc2.txt");//输出流查看全部
-
package com.IO; //读出文件 import java.io.*; public class IsrAndOswDemo { public static void main(String[] args) throws IOException { FileInputStream in=new FileInputStream("D\\javaio\\imooc.txt"); InputStreamReader isr=new InputStreamReader(in,"gbk");//gbk编码方式输出 FileOutputStream out=new FileOutputStream("D:\\javaio\\imoocutf81.txt"); OutputStreamWriter osw=new OutputStreamWriter(out,"utf-8"); /*int c; while((c=isr.read())!=-1){ System.out.print((char)c); }*/ char[] buffer=new char[8*1024]; int c; /*批量读取,放入buffer这个字符数组,从第0个位置开始放置,最多放buffer.length个 返回的是督导的字符的个数 */ while((c=isr.read(buffer,0,buffer.length))!=-1){ String s=new String(buffer,0,c); System.out.print(s); osw.write(buffer,0,c); //写一个字符数组 osw.flush(); } } }查看全部
-
2.字符流 (操作的是文本 文本文件) 注意默认的编码方式 1)编码问题 2)认识文本和文本文件 java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码) 文件是byte byte byte 的数据序列 文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化byte的存储 3)字符流(Reader Writer) 字符的处理,一次处理一个字符 字符的底层依然是基本的字节序列 4)InputStreamreader 完成byte流解析成char流 按照编码解析 OutputStreamWrite 提供char流到byte流 按照编码处理查看全部
-
gbk编码中文占2个字节,英文占1个字节, utf-8编码,中文占用3个字节,英文占用1个字节 java是双字节编码utf-16be 该编码中文和英文都是2个字节 当字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码 文本文件可以是任意编码的字节序列 如果在中文机器上直接创建文本文件,那么该文本文件只认识ANSI编码查看全部
-
序列化过程中子父类构造函数问题 父类实现了serializable接口,子类继承就可序列化。 1、子类在反序列化时,其父类实现了序列化接口,则不会递归调用他们的构造函数。 2、若父类没有实现serializable接口,其子类自行实现反序列化,递归调用其构造函数 结论:反序列化时,谁实现了可序列化(包括继承实现的),谁的构造函数就不会调用。查看全部
-
transient 关键字:被transient修饰的元素,该元素不会进行jvm默认的序列化,但可以自己完成这个元素的序列化 注意:(1)在以后的网络编程中,如果有某些元素不需要传输,那就可以用transient修饰,来节省流量;对有效元素序列化,提高性能。 (2)可以使用writeObject自己完成这个元素的序列化。ArrayList就是用了此方法进行了优化操作。ArrayList最核心的容器Object[] elementData使用了transient修饰,但是在writeObject自己实现对elementData数组的序列化。只对数组中有效元素进行序列化。readObject与之类似。 private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException private void readObject(java.io.ObjectInputStream s) throws java.io.IOException,ClassNotFoundException查看全部
举报
0/150
提交
取消