java基础I/O系统

I/O系统:

File

File类是用于处理文件和文件夹的API,它既可以表示一个文件,也可以表示文件夹;

 File file=new File(“文件夹或者文件路径");

 System.out.println("是否可写: "+file.canWrite());

 System.out.println("是否是文件夹:"+file.isDirectory());

System.out.println("是否是文件: "+file.isFile());

创建或删除文件夹

 File file1=new File(“文件夹”);

 file1.mkdirs();

 //或者使用 file1.mkdir();

其中mkdir只能在已知的目录下创建文件夹;而

 mkdirs可以在不存在的目录下创建文件夹

此时file1.isDirectory()为true

 //删除文件夹

 file1.delete()

创建或删除文件

 File file1=new File(“文件路径”);

 file1.createNewFile();

此时file1. isFile()为true

//删除文件

 file1.delete()

得到文件夹下的文件列表

 //得到file1文件夹下的所有文件名

 String[]filenames=file1.list();

// 得到file1文件夹下的所有文件对象

 File[]files=file1.listFiles();

过滤文件夹

File[]files=file1.listFiles(FilenameFilter的实现对象);

输入和输出的概念

Java中Inputstream和Reader及其子类都拥有read方法(重载方法),用于读取数据(如字节);

Java中Outputstream和Writer及其子类都拥有write方法,用于往某处写入数据。

InputStream 是表示从某些数据源中读取数据时产生的一个流对象,流对象产生后,我们就开启了数据读取的通道。

InputStream下常用的有FileInputStream子类,可以帮助我们以字节为单位读取文件

首先第一步:通过文件来创建具体文件流对象

 File file= newFile("文件路径");

 InputStream in=newFileInputStream(file);

第二步由于是字节的方式读取,所以我们创建字节数组,便于接收数据

 byte[] bytes =newbyte[200];

第三步通过循环判断是否存在数据,存在就把数据读入到字节数组

 int length =in.read(bytes);

 while (length!= -1) {

  String s = newString(bytes,0,length);

  r=in.read(bytes);

  System.out.println(s);

 }

最后,我们需要关闭流对象

  in.close():

OutputStream 表示为某个文件(或其他数据源)输出数据的一个流对象。流对象产生后,我们就开启了写数据的通道。

OutputStream下常用的实现类是FileOutputStream,可以帮组我们输出内容(写文件)

和InputStream读取文件的步骤类似,write方法可以传入int或byte数组,一般情况下,我们可以把字符串转化为字节数组。

 FileOutputStream out=newFileOutputStream("E:\\test\\test.txt");

 String content="我是内容";

 byte[]b=content.getBytes();

 out.write(b);

 out.close();

Writer 和Reader支持Unicode字符,非面向字节的数据读取和写入API

Writer 和Reader下的FileWriter和FileReader 常用于处理文件。

对于Writer首先我们仍然要用File来表示文件,然后把文件对象传给输出对象(写对象),通过写对象来输出内容到文件。

 File fx=newFile("E:\\test\\test.txt");

 FileWriter fw=newFileWriter(fx);

 fw.write("我使用了FileWriter");

 fw.write("我来了 你在哪儿?");

 fw.close();

对于Reader首先我们仍然要用File来表示文件,然后把文件对象传给输入对象(读对象),然后把内容读取到字符数组,最后把字符数组转化为字符串

 FileReader fr=newFileReader(fx);

需要创建字符数组

char [] cbuf=newchar[1024];

int len=fr.read(cbuf);

System.out.println(newString(cbuf,0,len));

fr.close();

使用缓冲器来包装Reader和Writer

对于writer,我们可以使用BufferedWriter来包装

BufferedWriter out=newBufferedWriter(new FileWriter(fileName));

//写内容

out.write("helloworld");

//输出新的一行(换行)

out.newLine();

out.write(“继续写内容”);

out.close();

对于Reader,我们可以使用BufferedReader来包装

 BufferedReader in = newBufferedReader(new FileReader(fileName));

 String line =in.readLine();

 while (line != null) {

 System.out.println(line);

 line = in.readLine();

 }

in.close();


你可能感兴趣的:(java基础)