基本IO操作 、 文本数据IO操作
java标准IO(input/output)操作
package day07; import java.io.FileOutputStream;
import java.io.IOException; /**
* java标准IO(input/output)操作
* 输入流InputStrean:用于从数据源读取数据到程序中
* 输出流OutputStream:用于将数据发送至目标
*
* 流划分为:节点流,处理流
* 节点流:又叫做低级流,特点:数据源明确,真实负
* 责"搬运"数据的流读写的基础是节点流
* 处理流:又叫高级流,特点:不能独立存在(没有意义),
* 用来处理其他流,目的是简化读写操作
*
* 文件流
* 文件流是低级流,因为数据源明确,就是读写文件的
*
* 文件输出流:java.io.FileOutputStream
* 用于将数据写入到文件中
*
* @author adminitartor
*
*/
public class FileOutputStream_Write {
public static void main(String[] args) throws IOException {
/*
* 文件流有两种常用模式:
* 覆盖写操作,当构造方法只传入一个参数时:
* FileOutputStream(String path)
* FileOutputStream(File file)
* 那么若该文件已存在,会先将文件中所有数据
* 清除。
*
* 追加写操作:
* FileOutputStream(String path,boolean append)
* FileOutputStream(File file,boolean append)
* 若第二个参数为true,那么通过当前流写出的内容会
* 被追加到文件末尾。
*/
FileOutputStream fos
= new FileOutputStream(
"fos.txt",true
);
String str = "该配合你演出的我演视而不见!";
fos.write(str.getBytes("UTF-8"));
System.out.println("写出完毕!"); fos.close();
}
}
FileOutputStream_Write.java
文件输入流,用于从文件中读取字节的流,是低级流
package day07; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; /**
* java.io.FileInputStream
* 文件输入流
* 用于从文件中读取字节的流,是低级流
*
* @author adminitartor
*
*/
public class FileInputStream_Read {
public static void main(String[] args) throws IOException {
FileInputStream fis
= new FileInputStream("fos.txt"); byte[] data = new byte[200]; int len = fis.read(data); String str = new String(data,0,len,"UTF-8");
System.out.println(str); fis.close(); }
}
FileInputStream_Read.java
使用文件流复制文件
package day07; import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; /**
* 使用文件流复制文件
* @author adminitartor
*
*/
public class CopyDemo1{
public static void main(String[] args) throws IOException {
FileInputStream fis
= new FileInputStream("music.mp3"); FileOutputStream fos
= new FileOutputStream("music_cp2.mp3"); byte[] buf = new byte[1024*10];
int len = -1; while((len = fis.read(buf))!=-1){
fos.write(buf,0,len);
} System.out.println("复制完毕!");
fis.close();
fos.close();
}
}
CopyDemo1.java
缓冲流 缓冲流是一对高级流,使用它们可以提高读写效率
java.io.BufferedOutputStream 缓冲字节输出流,用于提高写出效率
package day07; import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; /**
* 缓冲流 缓冲流是一对高级流,使用它们可以提高读写效率 java.io.BufferedOutputStream 缓冲字节输出流,用于提高写出效率
*
* java.io.BufferedInputStream 缓冲字节输入流,用于提高读取效率
*
* @author adminitartor
*
*/
public class CopyDemo2 {
public static void main(String[] args) throws IOException {
FileInputStream fis
= new FileInputStream("mv.mp4");
BufferedInputStream bis
= new BufferedInputStream(fis); FileOutputStream fos
= new FileOutputStream("mv_cp.mp4");
BufferedOutputStream bos
= new BufferedOutputStream(fos); int d = -1;
long start = System.currentTimeMillis();
while ((d = bis.read()) != -1) {
bos.write(d);
}
long end = System.currentTimeMillis(); System.out.println("复制完毕!耗时:"+(end-start)+"ms");
bis.close();
bos.close();
}
}
CopyDemo2.java
缓冲流写出数据的缓冲区问题
package day07; import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException; /**
* 缓冲流写出数据的缓冲区问题
* @author adminitartor
*
*/
public class Bos_Write {
public static void main(String[] args) throws IOException {
FileOutputStream fos
= new FileOutputStream("bos.txt");
BufferedOutputStream bos
= new BufferedOutputStream(fos); String str = "i have a pen,i have a apple"; bos.write(str.getBytes());
/*
* void flush()
* 该方法可以强制将当前缓冲流中缓冲区中
* 的数据写出。
*/
bos.flush(); System.out.println("写出完毕!"); bos.close();
}
}
Bos_Write.java