java输出流_Java输入输出流

本文详细介绍了Java中的IO流,包括输入流和输出流的分类和使用。输出流用于将数据从程序输出到目标,如控制台、文件或打印机;输入流则用于从数据源读取数据,如键盘、文件。文章还讲解了File类的使用,如创建、删除文件和目录。此外,还涵盖了字节流和字符流的使用,包括字节输入流、字节输出流、字符输入流和字符输出流的常见类及其操作方法,并提供了文件复制和对象序列化的示例代码。最后,讨论了缓冲流的使用,如BufferedReader和BufferedWriter,以提高读写效率。
摘要由CSDN通过智能技术生成

IO流

IO流用来处理设备之间的数据传输,传输是通过流的方式

Java用于操作流的对象都在java.io包中

流就是指一连串流动的字符,以先进先出的方式发送信息的通道。

流的方式

按照流的方向划分

输入流:将外部数据源的数据转换成流,程序通过读取流中的数据,完成对数据源读取的访问

输出流:将流中的数据转换到对应的数据源中,程序通过向流中写入数据,完成对数据源写入

按照类型划分

字节流:以字节为单位(8位),可以访问所有文件

字符流:以字符为单位(16位Unicode),只能访问文本文件

输出流

比如我们经常使用的 System.out.println("cocci"); 就是将字符串输出到控制台中,或者说输出到屏幕中,这里的屏幕就是输出设备,由程序将cocci通过流输出到目的地。

873d1a1a1bdc

输出设备除了屏幕,还有打印机、文件等。

输入流

比如使用键盘接收数据 Scanner sc = new Scanner(System.in); 这里的System.in就是输入流,程序从数据源这里指键盘去读取数据通过流输入到程序当中。

873d1a1a1bdc

输入设备除了键盘,还有扫描仪、文件等。

File类

文件和目录路径名的抽象表示形式,表示磁盘上的文件或目录

文件:可认为是相关记录或放在一起的数据的集合

构造方法

873d1a1a1bdc

示例:以下三种方式等价,各有不同的使用场景

//Windows中路径分隔可使用/或者\\

File file1 = new File("d:\\java\\a.txt");

File file2 = new File("d:\\java","a.txt");

File file3 = new File(new File("d:\\"),"java\\a.txt");

常用方法

873d1a1a1bdc

注意事项

delete()方法在删除目录时如果其内有内容则无法删除,需要先清空目录下的内容,再删除目录本身

isDirectory()和isFile()方法在判断是否为文件或者目录时,如果文件或目录不存在则返回false

createNewFile()方法在创建文件时,如果文件所在的目录不存在则创建失败并抛出异常

String[] list()和 File[] listFiles() 都是返回对象包含的所有的文件和目录,返回类型不同

文件与目录的相关操作

public static void main(String[] args) {

/*目录的创建与删除*/

File file=new File("d:\\test\\java");

if(file.exists()){

System.out.println("目录存在,删除目录");

file.delete(); //只会删除一级目录,即java

}else{

boolean b=file.mkdirs(); //创建多级目录

System.out.println("创建文件目录结果:" + b);

}

/*文件的创建与删除*/

File file2=new File("d:\\test\\a.txt");

if(file2.exists()){

System.out.println("文件存在,删除文件");

file2.delete();

}else{

try {

file2.createNewFile(); //创建文件

} catch (IOException e) {

e.printStackTrace();

}

System.out.println("创建文件");

}

//重命名,把a.txt重命名为b.txt

//file2.renameTo(new File("d:\\test\\b.txt"));

//把b.txt剪切到java目录下并重命名为c.txt

file2.renameTo(new File("d:\\test\\java\\c.txt"));

}

获取File对象的所有子文件和目录

public class TestFile {

public static void main(String[] args) {

//获取磁盘的所有根目录

File[] files =File.listRoots();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值