IO 流

原创 2018年04月15日 01:59:08

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

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

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


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();  // 关闭输出流


JavaSE高级篇---(IO流+多线程+XML+Socket+swing)

肖老师的这套课程,针对有一定Java基础的学员,详细讲解了多线程、XML、Socket、Swing、IO流、反射、注解,还有传值与传址的区别 、递归算法等,使学员熟练掌握JavaSE技术。
  • 2016年09月29日 15:01

Javaio流思维导图

  • 2018年02月21日 16:15
  • 356KB
  • 下载

文件流总结

  • 2018年03月31日 15:51
  • 29KB
  • 下载

IO流读取和创建文件

  • 2011年06月17日 12:26
  • 5.19MB
  • 下载

Java的例外处理和IO流

  • 2009年04月25日 10:21
  • 106KB
  • 下载

常用IO流详解

闲着无事,想想对IO流还不是很熟悉,于是
  • mrqiu_cool
  • mrqiu_cool
  • 2014-08-15 15:25:47
  • 359

几种常用的IO流

之前我们学习了File类,对文件进行了操作,那么如果想对文件中的内容进行操作该怎么办呢?这就离不开流的概念了。流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的...
  • lfh15732626246
  • lfh15732626246
  • 2016-12-05 17:43:21
  • 2370

java IO流学习总结

Java中的流,可以从不同的角度进行分类。     按流的方向分:输入流和输出流。     按处理数据单位分:字节流和字符流。     按实现功能分:节点流和处理流。       输出流:     ...
  • du_minchao
  • du_minchao
  • 2015-10-11 12:35:20
  • 20305

Java 常用IO流操作详解

IO流大家肯定不陌生,简单整理了一下常用IO流基本用法,其他的IO流以后有时间在整理。 1.基本概念IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,...
  • MAGIC_JSS
  • MAGIC_JSS
  • 2016-05-22 17:19:31
  • 15165

Java中常见的IO流及其使用

Java中常见的IO流的介绍及使用: ByteArrayInputStream & ByteArrayOutputStream FileInputStream & FileOutputStream P...
  • sunqunsunqun
  • sunqunsunqun
  • 2015-07-09 19:54:49
  • 4550
收藏助手
不良信息举报
您举报文章:IO 流
举报原因:
原因补充:

(最多只允许输入30个字)