字节流读文件
package IOinput;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Example01 {
public static void main(String[] args) throws IOException {
//创建一个文件字节输入流
FileInputStream in=new FileInputStream("F:\\JAVA高级应用\\蓝桥杯\\算法很美\\cc150\\_1_1Different.java");//要读取的位置
int b=0;//定义一个int类型的变量B,记住每次读取的一个字符;
while(true) {
b=in.read();
if(b==-1) {
break;
}
System.out.print((char)b);
}
in.close();
}
}
字节流写文件
package IOinput;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Example02 {
public static void main(String[] args) throws IOException {
//创建一个文件字节输出流
FileOutputStream out=new FileOutputStream("F:\\JAVA高级应用\\java开发\\内容\\Chapter07\\bin\\io.text");
String str="创智播客";
byte[]b =str.getBytes();//
for(int i=0;i<b.length;i++) {
out.write(b[i]);
}
out.close();
}
}
文件拷贝
1、效率不高
package IOinput;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Example04 {
public static void main(String[] args) throws IOException {
//创建一个字节流,用于读取当前目录下source文件夹的MP3文件
InputStream in=new FileInputStream("F:\\JAVA高级应用\\java开发\\内容\\Chapter07\\bin\\source\\io.text");
//创建一个文件字节输出流,用于将读取的数据写入target目录下的文件中
OutputStream out=new FileOutputStream("F:\\JAVA高级应用\\java开发\\内容\\Chapter07\\bin\\target\\iocopy.class");
int len;//定义一个Int类型的变量len,记住每次读取的一个字节;
long begintime=System.currentTimeMillis();//记录读取的时间
while((len=in.read())!=-1) {//读取一个字节判断是否读到文件结尾
out.write(len);//将读到的字节写入文
// System.out.println(len);
}
long endtime=System.currentTimeMillis();//获取拷贝
System.out.println(endtime-begintime+"毫秒");
}
}
2、使用缓冲区拷贝(效率大大提高)
package IOinput;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
//字节缓冲流
public class Example05 {
public static void main(String[] args) throws IOException {
InputStream in=new FileInputStream("F:\\JAVA高级应用\\java开发\\内容\\Chapter07\\bin\\source\\io.text");
OutputStream out=new FileOutputStream("F:\\JAVA高级应用\\java开发\\内容\\Chapter07\\bin\\target\\iocop1.text");
byte[] buff=new byte[1024];
int len;
long begintime=System.currentTimeMillis();
while((len=in.read(buff))!=-1) {
out.write(buff, 0, len);
}
long endtime=System.currentTimeMillis();
System.out.println(endtime-begintime+"ms");
in.close();
out.close();
}
}
3、字节缓冲流(效率提高了,也比较方便)
```java
package IOinput;
import java.io.*;
public class Example06 {
public static void main(String[] args)throws Exception {
BufferedInputStream bis=new BufferedInputStream
(new FileInputStream("F:\\JAVA高级应用\\java开发\\内容\\Chapter07\\bin\\source\\io.text"));
BufferedOutputStream bos=new BufferedOutputStream
(new FileOutputStream("F:\\JAVA高级应用\\java开发\\内容\\Chapter07\\bin\\target\\iocopy2.text"));
int len;
while((len=bis.read())!=-1) {
bos.write(len);
}
bis.close();
bos.close();
}
}
字符流读文件
package IoOutStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
//字符流定义及基本用法
public class Example07 {//不会出现乱码
public static void main(String[] args) throws IOException {
FileReader reader=new FileReader("F:\\JAVA高级应用\\java开发\\内容\\Chapter07\\bin\\source\\io.text");
int ch;//定义一个变量用于记录读取的字符
while((ch=reader.read())!=-1) {
System.out.print((char)ch);
}
reader.close();
}
}
字符流写入文件
package IoOutStream;
import java.io.FileWriter;
import java.io.IOException;
public class Example08 {
public static void main(String[] args) throws IOException {
FileWriter writer=new FileWriter("F:\\JAVA高级应用\\java开发\\内容\\Chapter07\\bin\\target\\字符流.txt");
String str="你好,创制博客";
writer.write(str);
writer.write("\r\n");
writer.close();
}
}
使用缓冲字符流进行拷贝
package IoOutStream;
import java.io.*;
public class Example09 {
public static void main(String[] args) throws IOException {
FileReader reader=new FileReader("F:\\JAVA高级应用\\java开发\\内容\\Chapter07\\bin\\source\\io.text");
BufferedReader br=new BufferedReader(reader);
FileWriter writer=new FileWriter("F:\\JAVA高级应用\\java开发\\内容\\Chapter07\\bin\\target\\字节流copy.class");
BufferedWriter bw=new BufferedWriter(writer);
String str;
while((str=br.readLine())!=null) {
bw.write(str);
bw.newLine();
}
br.close();
bw.close();
}
}
字节流转换字符流
package IoOutStream;
import java.io.*;
//字节流转换字符流
public class Example10 {
public static void main(String[] args) throws Exception {
FileInputStream in=new FileInputStream("F:\\JAVA高级应用\\java开发\\内容\\Chapter07\\bin\\source\\io.text");
InputStreamReader isr=new InputStreamReader(in);//进行转换
BufferedReader br=new BufferedReader(isr);
//br缓冲流
FileOutputStream out=new FileOutputStream("F:\\JAVA高级应用\\java开发\\内容\\Chapter07\\bin\\target\\io3.text");
OutputStreamWriter osw=new OutputStreamWriter(out);
BufferedWriter bw=new BufferedWriter(osw);//赋予字符输出流对象缓冲区
//bw缓冲流
String line;//一行
while((line=br.readLine())!=null) {
bw.write(line);
// System.out.println();
}
br.close();
bw.close();
}
}