-
file.mkdir()创建文件夹查看全部
-
file.exists() 判断文件存不存在查看全部
-
流查看全部
-
流查看全部
-
字节流查看全部
-
file.wenk查看全部
-
hgjgj查看全部
-
如果其父类没有实现序列化接口,那个父类的构造函数会被调用,否则不会被调用。查看全部
-
对象的序列化和反序列化 对象序列化就是将Object转换成byte序列,反之叫对象的反序列化 一、 序列化流(ObjectOutputStream)是过滤流----writeObject 反序列化流(ObjectInputStream)----readObject 二、 1.transient 关键字:被transient修饰的元素,该元素不会进行jvm默认的序列化,但可以自己完成这个元素的序列化 2.ArrayList源码中序列化和反序列化的方法,只对数组中有效元素进行序列化,提高性能。 三、序列化接口(Serializable) 对象必须实现序列化接口,才能进行序列化,否则将出现异常 (1)父类实现了serializable接口,子类继承就可序列化。 1、子类在反序列化时,父类实现了序列化接口,则不会递归调用其构造函数。 (2)父类未实现serializable接口,子类自行实现可序列化 2、子类在反序列化时,父类没有实现序列化接口,则会递归调用其构造函数。 结论:谁实现了可序列化(包括继承实现的),谁的构造函数就不会调用。查看全部
-
字符流 一、 Reader/Writer 操作的大多是文本文件;默认按照项目的编码解析(父类,抽象类) (1)InputStreamReader/OutputStreamWriter 提供char流与byte流相互转换(子类) 字符流的过滤器(缓冲流): 1.BufferedReader -- > readLine 读一行 不识别换行符,不会自动换行 ps:在文件中换行,可以用newLine();实现 2.BufferedWriter/PrintWriter -- > writeLine/println 写一行,不会自动换行/自动换行 (2)FileReader/FileWriter 适用于操作文件,但无法选择编码方式,用法与InputStreamReader和OutputStreamWriter类似 二、 EOF=End 及文件结尾(in.read()=-1) 三、 输入流基本方法 read(); 四、 输入流基本方法 read();查看全部
-
序列化对象需要接口 implements Serializable 不想默认序列化的属性,在前面加 transient(private transient int...)查看全部
-
字节流 一、 InputStream、OutputStream 抽象了应用程序读写数据方式(父类,抽象类) FileInputStream、FileOutputStream 具体的实现了在文件中读写数据(子类) (1)DataOutputStream&DataInputStream 对"流"功能的扩展,可以更加方便的读取int,long,字符等类型数据 DataOutputStream --- writeInt()/writeDouble()/writeUTF() (2)BufferedInputStream&BufferedOutputStream 提供了带缓冲区的操作,提高了IO的性能 三者对比: FileOutputStream--->write()方法相当于一滴一滴地把水“转移”过去 DataOutputStream-->writeXxx()方法会方便一些,相当于一瓢一瓢把水“转移”过去 BufferedOutputStream--->write方法更方便,相当于一飘一瓢先放入桶中,再从桶中倒入到另一个缸中,性能提高了 二、 EOF=End 及文件结尾(in.read()=-1) 三、 输入流基本方法 read(); int b=in.read();//读取一个字节无符号填充到int的低八位,返回读取的长度,-1是EOF;适合读取小文件 in.read(byte[] buf);//读取数据填充到字节数组buf in.read(byte[] buf,int start,int size);//同上,从buf的start位置开始存放size长度的数据,适合读取大文件 四、 输出流基本方法write(); out.write(int b); //写出一个byte到流,b的低八位 out.write(byte[] buf);//将buf字节数组都写入到流 out.write(byte[] buf,int start,int size);//同上,详见read对应方法查看全部
-
transient关键字查看全部
-
BufferedInputStream及BufferedOutputStream<br> 为io提供带缓冲区的操作,一般打开文件进行写入或读取操作时,都会加上缓冲,<br> 提高io的性能,文件流比作水<br> FileOutputStream-->write()一滴一滴将水转移<br> DataOutputStream-->writexx()相当于一瓢一瓢转移<br> BufferedOutputStream-->write 相当于一瓢一瓢移到桶中,再倒入另外一个缸中<br> <br> 代码:利用带缓冲的文件拷贝(单字节)<br> 第一步:先判断是否存在及是<br> 否是文件代码与之前一样<br> 第二步:创建带缓冲字节流<br> BufferedInputStream bis=new BufferedInputStream(<br> new FlieInputStream(srcFile));//srcFile为原文件<br> BufferedOutputStream bis=new BufferedOutputStream(<br> new FlieOutputStream(destFile));//destFile复制的文件<br> in c;<br> while((c=bis.read())!=-1){<br> bos.write(c);<br> bos.flush();//刷新缓冲区如果不写就写不到缓冲区<br> }<br> bis.close();<br> bos.colse(); 比较结果:批量字节读取文件最快查看全部
-
FlieOutputStream:实现向文件中写出byte数据的方法 代码: //如果该文件不存在,则直接创建,如果存在,删除后创建 FileOutputStream out=new FileOutputStream(file,true)//不用true则会被删除,用true就不会,直接追加内容,file文件对象或者路径 out.write(‘A’);//写出了A的第八位write只能写一个字节 out.write('B'); int a=10;//则write写int要写4次 out.write(a>>>24); out.write(a>>>16); out.write(a>>>8); out.write(a); //写汉字 byte[] gbk="中国".getBytes("gbk"); out.write(gbk); out.close(); 代码:文件的拷贝 public static void copyFile(File srcFile,File destFile)throws IOException{ //判断文件是否存在 if(!srcFile.exists()){ throw new IllegalArgumentException("文件"+srcFile+"不存在"); } //判断是不是文件 if(!srcFile.isFile()){ throw new IllegalArgumentException(srcFile)} } FileInStream in=new FileInStream(srcFile); FileOutStream out=new FileOutStream(destFile); byte[] buf=new byte[8*1024]; int b; while(()b=in.read(buf,0,buf.length))!=-1){ out.write(buf,0,b); out.flush();//最好加上 } in.close(); out.close();查看全部
举报
0/150
提交
取消