JavaSE入门学习44:文件传输基础之I/O流
Posted life is wonderful
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSE入门学习44:文件传输基础之I/O流相关的知识,希望对你有一定的参考价值。
三字节流的使用
6)FileOutputStream--->实现了向文件中写出byte数据的方法
FileOutputStream继承了OutputStream抽象类。FileOutputStream类中的方法:
实例代码1:
<span style="font-size:18px;">import java.io.*;
public class FileOutDemo1{
public static void main(String[] args) throws IOException {
//如果该文件不存在,则直接创建,如果存在,删除后创建
FileOutputStream out = new FileOutputStream("E:\\\\Java\\\\JavaSE\\\\IO\\\\out.dat");
out.write('A');//写出了'A'的低八位
out.write('B');//写出了'B'的低八位
int a = 10;//write只能写八位,那么写一个int需要些写4次,每次8位
out.write(a >>> 24);
out.write(a >>> 16);
out.write(a >>> 8);
out.write(a);
byte[] gbk = "中国".getBytes("gbk");
out.write(gbk);
out.close();
IOUtil.printHex("E:\\\\Java\\\\JavaSE\\\\IO\\\\out.dat");
}
}</span>
运行结果:
文件拷贝
实例代码2:
<span style="font-size:18px;">import java.io.*;
public class IOUtil{
/*
* 文件拷贝,字节批量读取
*/
public static void copyFile(File srcFile,File destFile) throws IOException{
if(!srcFile.exists()){
throw new IllegalArgumentException("文件:"+srcFile+"不存在");
}
if(!srcFile.isFile()){
throw new IllegalArgumentException(srcFile+"不是文件");
}
FileInputStream in = new FileInputStream(srcFile);
FileOutputStream out = new FileOutputStream(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();
}
public static void main(String[] args) {
try{
IOUtil.copyFile(new File("E:\\\\Java\\\\JavaSE\\\\IO\\\\test.txt"), new File("E:\\\\Java\\\\JavaSE\\\\IO\\\\test1.txt"));
}catch(IOException e) {
e.printStackTrace();
}
}
}</span>
运行结果:
7)DataOutputStream类/DataInputStream类
对"流"功能的扩展,可以更加方面的读取int、long、字符等类型数据。此类体现了设计模式中的装饰模式。
DataInputStream类中常用的方法:
DataOutputStream类中常用的方法:
实例1:
import java.io.*;
public class DisDemo{
public static void main(String[] args) throws IOException{
String file = "E:\\\\Java\\\\JavaSE\\\\IO\\\\demo\\\\dos.dat";
IOUtil.printHex(file);
DataInputStream dis = new DataInputStream(new FileInputStream(file));
int i = dis.readInt();
System.out.println(i);
i = dis.readInt();
System.out.println(i);
long l = dis.readLong();
System.out.println(l);
double d = dis.readDouble();
System.out.println(d);
String s = dis.readUTF();
System.out.println(s);
dis.close();
}
}
运行结果: