-
IO流查看全部
-
摘抄笔记: 1.字节流 1)InputStream、OutputStream InputStream抽象了应用程序读取数据的方式 OutputStream抽象了应用程序写出数据的方式 2)EOF = End 读到-1就读到结尾 3)输入流基本方法 int b = in.read();读取一个字节无符号填充到int低八位.-1是 EOF in.read(byte[] buf) in.read(byte[] buf,int start,int size) 4)输出流基本方法 out.write(int b) 写出一个byte到流,b的低8位 out.write(byte[] buf)将buf字节数组都写入到流 out.write(byte[] buf,int start,int size) 5)FileInputStream--->具体实现了在文件上读取数据 6)FileOutputStream 实现了向文件中写出byte数据的方法 7)DataOutputStream/DataInputStream 对"流"功能的扩展,可以更加方面的读取int,long,字符等类型数据 DataOutputStream writeInt()/writeDouble()/writeUTF() 8)BufferedInputStream&BufferedOutputStream 这两个流类位IO提供了带缓冲区的操作,一般打开文件进行写入 或读取操作时,都会加上缓冲,这种流模式提高了IO的性能 从应用程序中把输入放入文件,相当于将一缸水倒入到另一个缸中: FileOutputStream--->write()方法相当于一滴一滴地把水“转移”过去 DataOutputStream-->writeXxx()方法会方便一些,相当于一瓢一瓢把水“转移”过去 BufferedOutputStream--->write方法更方便,相当于一飘一瓢先放入桶中,再从桶中倒入到另一个缸中,性能提高了查看全部
-
静态方法可以直接用类名.方法名来使用,如果创建了也可以查看全部
-
1、对象序列化,就是将Object转换成byte序列存储起来,反之叫对象的反序列化<br><br><br><br> 2、序列化流(ObjectOutputStream),字节的过滤流 —— writeObject()方法反序列化流(ObjectInputStream)—— readObject()方法<br><br><br><br> 3、序列化接口(Serializable)对象必须实现序列化接口,才能进行序列化,否则将出现异常。这个接口,没有任何方法,只是一个【标准】 一、被序列化的對象要實現序列化接口:<br><br> public class Student implements Serializable{<br><br> 二.對象的序列化:<br><br> public static void main(String[] args) throws Exception{<br><br> //序列化后存到這個文件里<br><br> String file = "demo/obj.dat";<br><br> //1.对象的序列化<br><br> ObjectOutputStream oos = new ObjectOutputStream(<br><br> new FileOutputStream(file));<br><br> Student stu = new Student("10001", "张三", 20);<br><br> oos.writeObject(stu);<br><br> oos.flush();<br><br> oos.close();<br> //反序列化<br> ObjectInputStream ois = new ObjectInputStream(<br> new FileInputStream(file));<br> Student stu = (Student)ois.readObject();<br> System.out.println(stu);<br> ois.close();查看全部
-
File.mkdir(s) 创建(多级)目录 File.creatNewFile() 创建新文件查看全部
-
Java 编码占用字节问题 以及&去空格的方法查看全部
-
public static void main(String[] args)throws IOException {<br> FileInputStream in = new FileInputStream("e:\\javaio\\imoocutf8.txt");<br> InputStreamReader isr = new InputStreamReader(in,"utf-8");//默认项目的编码,操作的时候,要写文件本身的编码格式 /*int c ;<br> while((c = isr.read())!=-1){<br>此处将读到的字符自动转化为整型 System.out.print((char)c);<br>强制类型转换 }*/<br> char[] buffer = new char[8*1024];<br> int c;<br> /*批量读取,放入buffer这个字符数组,从第0个位置开始放置,最多放buffer.length个<br> 返回的是读到的字符的个数<br> */<br> while(( c = isr.read(buffer,0,buffer.length))!=-1){<br> String s = new String(buffer,0,c);<br> System.out.print(s);<br> osw.write(buffer,0,c);<br> osw.flush();<br> }<br> isr.close();<br> osw.close();<br> }查看全部
-
FileReader 和FileWriter适用于操作文件的,FileReader与FileWriter的用法与InputStreamReader和OutputStreamWriter类似,但是他们不能选择编码方式,因此对于与项目的编码方式不同的文本文件用FileWriter读取是会出现乱码的。同时,FileWriter(filename,true)是一种可在原文件上追加写操作的构造方式。查看全部
-
DataOutputStream/DataInputStream是对“流”功能的扩展,可以更加方便的读取 int,long, 字符等类型数据<br> DataOutputStream:使用FileOutputStream构造出来,通过包装FileOutput,可以调用FileOutput类的write方法来构造新的更方便的写方法 数据输入输出流: DataOutputStream dos = new DataOutputStream(new FileOutputStream(file)); dos.writeInt(10); dos.writeLong(10l);字母l dos.writeDouble(10.5); //采用utf-8编码写出 dos.writeUTF("中国");查看全部
-
FileOutputStream fos = new FileOutputStream(file,true)<br> 文件不存在,则创建,否则在后面追加内容<br> FileOutputStream fos = new FileOutputStream(file)<br> 文件不存在,则创建,否则覆盖<br> java中throw和throws的区别 <br> 仔细一看就知道了: public Test() throws RepletException { try { System.out.println("Test this Project!") } catch (Exception e) { throw new Exception(e.toString()); } }throws是用来声明一个方法可能抛出的所有异常信息throw则是指抛出的一个具体的异常类型搜索。通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后再将包装后的异常信息抛出查看全部
-
学习字符流之前首先应该了解的一些问题:<br> 1) 编码问题——不同的字符集有不同的编码,对应着不同的字节编码规则<br> 2)认识文本和文本文件<br> java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)<br> 文件是byte byte byte ...的数据序列<br> 文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果<br> 3)字符流(Reader Writer)---->操作的是文本文本文件<br> 字符的处理,一次处理一个字符<br> 字符的底层任然是基本的字节序列<br> 字符流的基本实现<br> InputStreamReader 完成byte流解析为char流,按照编码解析<br> OutputStreamWriter 提供char流到byte流,按照编码处理 <br> <br> 1:从流的内容的特点上来讲,字符流,就是由字符组成的流<br> 2:字符对于人类而言是易识别的,不同的字符集有不同的字符,为不同的地区范围内的人类使用,当然有些字符在好多地区存在的形式是一致的,比如:0、1、2、3、4、5、6、7、8、9等,但是对于计算机而言,他还是比较容易识别字节,而字节是字符的组成成分,不同的字符集,如果拥有同样的字符,他的字节编码基本是不同的。<br> 3:计算机处理字符的底层也是以处理字节的方式来处理的。 4:java的字符,采用双字节编码,也就是Unicode编码,每一个字符有两个字节组成,表现成字节编码的形式的话就是十六位无符号整数 而java中的文件或者是操作系统中的文件,是一个个字节编码的数据序列 java的文本文件字符序列按照某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果,其本质还是字节的序列。所以,在java中对于字符流的操作本质上还是对于字节流的操作。查看全部
-
BufferedInputStream&BufferedOutputStream<br> 这两个流类为IO提供了带缓冲区的操作,一般打开文件进行写入或读取操作时,都会加上缓冲,这种流模式提高了IO的性能。<br> 假如从应用程序中把输入放入文件,相当于将一缸水倒入到另一个缸中:<br> FileOutputStream--->write()方法相当于一滴一滴地把水“转移”过去<br> DataOutputStream-->writeXxx()方法会方便一些,相当于一瓢一瓢把水“转移”过去<br> BufferedOutputStream--->write方法更方便,相当于一飘一瓢先放入桶中,再从桶中倒入到另一个缸中,性能提高了<br> <br> 注意:使用BufferedOutputStream,在每一次写入后,缓冲区要刷新,不然写不到文件中去。查看全部
-
DataInputStream,DataOutputStream是对流功能的扩张,可以更加方便的读取int,long,字符等类型的数据. FileInputStream file=new FileInputStream("E:\\practice\\text"); DataInputStream i=new DataInputStream(file); //参数名是InputStream抽象类的对象,所以用他子类FileInputStream的对象来做参数. readInt readLong 方法都是对FileInputStream方法的包装 DataOutputStream/DataInputStream是对“流”功能的扩展,可以更加方便的读取 int,long, 字符等类型数据 DataOutputStream:使用FileOutputStream构造出来,通过包装FileOutput,可以调用FileOutput类的write方法来构造新的更方便的写方法: new DataOutputStream(new FileOutptStream(file)) wrieteUTF()采用utf-8编码写出字符串 用utf-16be写出字符串,或字符串数组 写完之后一定要关闭流 数据输入输出流: DataInputStream、DataOutputStream 是对“流”功能的扩展,方便读写 DataOutputStream dos = new DataOutputStream(new FileOutputStream(file)); dos.writeInt(10); dos.writeLong(10l);字母l dos.writeDouble(10.5); //采用utf-8编码写出 dos.writeUTF("中国"); //采用utf-16be编码写出 dos.writeChars("中国");查看全部
-
输入、输出是相对于字节流或者字符流而言的:<br> 1:输入,是将字节或者字符从文件中输入到流中<br> 2:输出,是将字节或者字符从流中输出到文件中<br> <br> 我们可以将文件想象程容器,将文件的内容(字节或者字符)想象程水,我们这里学习的JAVA对象就像是管道一样,并且能够控制从水池里获取水形成输入流,也可以将水注入到水池中形成输出流。 如果文件不存在,则创建;如果存在,则删除后再创建,但是换一种构造方法加一个true就可以变成在文件后追加内容了 单字节输出每次输出一个字符的低八位。输出一个int类型字符需要移位输出四次查看全部
-
1、byte(字节)类型 8 位,int(4字节)类型 32 位,为了避免数据转换错误,通过 & 0xff 将高 24 位清零<br> 2、long time = System.currentTimeMillis()<br> 当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量)<br> 3、is.read() 单字节适合读取 小 文件 <br> is.read(byte[] bytes,int star,int size) 字节数组适合读取 大 文件<br> byte[] buf = new byte[20*1024];读取文件最常用的是批量读取int bytes = fis.read(buf, 0 , buf.length);意为将读到的字节存放于buf字节数组中,从第0个位置开始放最多放buf.length个,所以会出现两个情况1.buf数组不够放2.buf数组填不满。所以此处返回的是读取的字节的个数查看全部
举报
0/150
提交
取消