IO 流

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。

即数据在两设备间的传输称为流,流的本质是数据传输,

根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作


IO 流的分类
根据处理数据类型的不同分为:字符流字节流
根据数据流向不同分为:输入流输出流

文件操作 File 类

1,public boolean mkdir()                 创建此抽象路径名指定的目录。
2,public boolean createNewFile()   创建一个文件
3,public boolean delete()  删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能删除。
4,public boolean exists()   测试此抽象路径名表示的文件或目录是否存在。
5,public File[] listFiles()     返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
6,public boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。

---------------------------------------------------------------------------创建的目录、创建文件

                File file=new File("d://java创建的目录");
boolean b=file.mkdir();  // 创建虚拟目录
if(b){
System.out.println("目录创建成功!");
file=new File("d://java创建的目录//java创建的文件.txt");
boolean b2=file.createNewFile();  // 创建文件
if(b2){
System.out.println("文件创建成功!");
}else{
System.out.println("文件创建失败!");
}
}else{
System.out.println("目录创建失败!");

}

---------------------------------------------------------------------------删除文件、删除目录

        File file=new File("d://java创建的目录//java创建的文件.txt");
if(file.exists()){  // 假如文件存在
boolean b=file.delete();  // 删除文件
if(b){
System.out.println("删除文件成功!");
}else{
System.out.println("删除文件失败!");
}
}
file=new File("d://java创建的目录");
if(file.exists()){
boolean b=file.delete();  // 删除目录
if(b){
System.out.println("删除目录成功!");
}else{
System.out.println("删除目录失败!");
}
}

-------------------------------------------------------------------------------遍历目录

                File file=new File("D://SQLYogEnterprise//SQLyog_Enterprise");
File files[]=file.listFiles();  // 遍历目录
for(int i=0;i<files.length;i++){
System.out.println(files[i]);
}

------------------------------------------------------------------------------

/**
* 打印文件
* @param file
*/
public static void listFile(File file){
if(file!=null){
if(file.isDirectory()){  // 是目录
File f[]=file.listFiles();  // 遍历目录
if(f!=null){
for(int i=0;i<f.length;i++){
listFile(f[i]);  // 递归调用
}
}
}else{   // 是文件
System.out.println(file);  // 是文件,直接打印文件的路径
}
}
}

public static void main(String[] args) {
File file=new File("D://eclipse_j2ee");
listFile(file);
}


字节输入,输出流

1,InputStream 读取文件
2,OutputStream 写入文件
3,BufferedInputStream 和 fBuferedOutputStream

4,缓冲和非缓冲的区别及性能对比

-----------------------------------------------------------输入

                File file=new File("D://测试文件.txt");
InputStream inputStream=new FileInputStream(file);  // 实例化FileInputStream
byte b[]=new byte[1024];
int len=inputStream.read(b);
inputStream.close(); // 关闭输入流
System.out.println("读取的内容是:"+new String(b,0,len));


                File file=new File("D://测试文件.txt");
InputStream inputStream=new FileInputStream(file);  // 实例化FileInputStream
int fileLength=(int)file.length();
byte b[]=new byte[fileLength];
inputStream.read(b);
inputStream.close(); // 关闭输入流
System.out.println("读取的内容是:"+new String(b));


                File file=new File("D://测试文件.txt");
InputStream inputStream=new FileInputStream(file);  // 实例化FileInputStream
int fileLength=(int)file.length();
byte b[]=new byte[fileLength];
int temp=0;
int len=0;
while((temp=inputStream.read())!=-1){
// 一个字节一个字节读取,放到b字节数组里
b[len++]=(byte)temp;
}
inputStream.close(); // 关闭输入流

System.out.println("读取的内容是:"+new String(b));

--------------------------------------------------------------------输出

        File file=new File("D://测试文件.txt");
OutputStream out=new FileOutputStream(file);
String str="你好,我好,大家好,Java好";
byte b[]=str.getBytes();
out.write(b); //  将b字节数组写入到输出流

out.close();  // 关闭输出流


                File file=new File("D://测试文件.txt");
OutputStream out=new FileOutputStream(file,true);
String str="你好,我好,大家好,Java好2321312312";
byte b[]=str.getBytes();
out.write(b); //  将b字节数组写入到输出流
out.close();  // 关闭输出流

-------------------------------------------------缓冲

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class Demo6 {
/**
* 缓冲
*/
public static void bufferStream()throws Exception{
// 定义了一个带缓冲的字节输入流
BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream("D://《一脚踹进J2SE》视频笔录2.doc"));
// 定义了一个带缓冲的字节输出流
BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(new FileOutputStream("F://赋值的文件2.doc"));
int b=0;
long startTime=System.currentTimeMillis(); // 开始时间
while((b=bufferedInputStream.read())!=-1){
bufferedOutputStream.write(b);
}
bufferedInputStream.close();
bufferedOutputStream.close();
long endTime=System.currentTimeMillis();  // 结束时间
System.out.println("缓冲花费的时间是:"+(endTime-startTime));
}

/**
* 非缓冲
*/
public static void stream() throws Exception{
InputStream inputStream=new FileInputStream("D://《一脚踹进J2SE》视频笔录.doc");  // 定义一个输入流
OutputStream outputStream=new FileOutputStream("F://赋值的文件.doc");
int b=0;
long startTime=System.currentTimeMillis(); // 开始时间
while((b=inputStream.read())!=-1){
outputStream.write(b);
}
inputStream.close();
outputStream.close();
long endTime=System.currentTimeMillis();  // 结束时间
System.out.println("非缓冲花费的时间是:"+(endTime-startTime));
}
public static void main(String[] args)throws Exception {
stream();
bufferStream();
}
}

字符输入,输出流

1,Reader 读取文件
2,Writer 写入文件

                File file=new File("D://测试文件.txt");
Reader reader=new FileReader(file);
char c[]=new char[1024]; // 字符数组
int len=reader.read(c);
reader.close();  // 关闭输入流
System.out.println("读取的内容是:"+new String(c,0,len));


                File file=new File("D://测试文件.txt");
Reader reader=new FileReader(file);
char c[]=new char[1024]; // 字符数组
int temp=0;
int len=0;
while((temp=reader.read())!=-1){
c[len++]=(char)temp;
}
reader.close();  // 关闭输入流
System.out.println("读取的内容是:"+new String(c,0,len));


                File file=new File("D://测试文件.txt");
Writer out=new FileWriter(file);
String str="我爱中华";
out.write(str);  // 将字符串写入输出流
out.close();  // 关闭输出流

                File file=new File("D://测试文件.txt");
Writer out=new FileWriter(file,true);
String str="我爱中华2";
out.write(str);  // 将字符串写入输出流
out.close();  // 关闭输出流


阅读更多
博主设置当前文章不允许评论。

博主推荐

换一批

没有更多推荐了,返回首页