IO流使用

2:需求:请大家把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台。

package FileText;

import java.io.File;

/**

 * 需求:请大家把E:\code目录下所有的html结尾的文件的绝对路径给输出在控制台。

 * 1.File对象封装E:\code

 * 2.调用FIle类的listFiles()方法,返回File类型的数组

 * 3.对该数组进行非空判断

 * 4.用增强for()循环获取该数组中的每一个文件

 * 5.对每一个文件进行判断,是否同时为是绝对路径和满足以"html"结尾

 * 6.如果是,就调用getAbsolutePath()方法,将文件的绝对路径输出在控制台

扫描二维码关注公众号,回复: 2664058 查看本文章

 * */

public class FileText_08 {

    public static void main(String[] args) {

       File file=new File("e:\\code");

      

        File[] listFiles =file.listFiles();//将该文件夹下的文件封装在File类型的数组中

        System.out.println("该文件夹下以html结尾的文件绝对路径有:");

        if(listFiles!=null){

        for(File f:listFiles){

            if(f.getName().endsWith("html") &&f.isAbsolute()){

               System.out.println(f.getAbsolutePath());

            }

        }

        }

    }

}

3:复制文本文件:有5种方式

五种方式有:BufferedInputStream的一次获取一个字节和一次获取一个字节数组,以及字符转换输入流(InputStreamReader)的一次获取一个字符数组,还有高效字符流的一次获取一个字符和一次获取一个字符数组

package InputDemo;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

/**

 * 需求:使用5种方法将当前项目下的a.txt内容复制到当前项目下的b.txt

 * 1.定义5个方法,分别是FileInputStream的一次获取一个字节和一次获取一个字节数组的复制方法,

 * BufferedInputStream的一次获取一个字符个一次获取一个字符数组

 * 以及字符转换流(InputStreamReader)的一次获取一个字符数组

 * 2.在这5个方法中,分别创建各自的输入流对象来封装a.txt文件,创建输出流对象来封装目的地

 * 3.最后分别关闭流资源,字符流每写完数据需要刷新数据

 * 4.输出控制台

 * */

public class CopyText_01 {

    public static void main(String[] args) throws IOException {

       method1();//该方法是字节缓冲输入流的一次获取一个字节来复制文件

       method2();//该方法是字节缓冲输入流的一次获取一个字节数组来复制文件

       method3();//该方法是高效字符流的一次获取一个字符来复制文件

       method4();//该方法是高效字符流的一次获取一个字符数组来复制文件

       method5();//giant方法是使用字符转换流来复制文件

      

   

    }

    private static void method5() throws IOException {

       // 创建字符转化输入流的对象

       InputStreamReader isr=new InputStreamReader(new FileInputStream("a.txt"));

       //创建字符输出流对象

       OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("b.txt"));

       //一次获取一个字符数组

       char []ch=new char[1024];

       int len=0;

       while((len=isr.read(ch))!=-1){

           osw.write(ch, 0, len);

           osw.flush();

       }

       isr.close();

       osw.close();

    }

    private static void method4() throws IOException {

       // 创建高效字符输入流对象

       BufferedReader br=new BufferedReader(new FileReader("a.txt"));

       //创建高效字符输出流对象

       BufferedWriter bw=new BufferedWriter(new FileWriter("b.txt"));

       //一次获取一个字符数组

       char []ch=new char[1024];

       int len=0;;

       while((len=br.read(ch))!=-1){

           bw.write(ch, 0, len);

           bw.flush();//刷新该流

       }

       br.close();

       bw.close();

    }

    private static void method3() throws IOException {

       // 创建高效字符输入流对象

       BufferedReader br=new BufferedReader(new FileReader("a.txt"));

       //创建高效字符输出流对象

       BufferedWriter bw=new BufferedWriter(new FileWriter("b.txt"));

       //一次获取一个字符

       String len=null;

       while((len=br.readLine())!=null){

           bw.write(len);

           bw.newLine();//插入分隔符

           bw.flush();

       }

       br.close();

       bw.close();

    }

    private static void method2() throws IOException {

       // 创建字节缓冲输入流对象

       BufferedInputStream bis=new BufferedInputStream(new FileInputStream("a.txt"));

       //创建字节缓冲输出流对象

       BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("b.txt"));

       //一次获取一个字节数组

       byte[] bys=new byte[1024];

       int  len=0;

       while((len=bis.read(bys))!=-1){

           bos.write(bys, 0, len);

           bos.flush();

       }

       bis.close();

       bos.close();

    }

    private static void method1() throws IOException {

       // 创建字节缓冲输入流对象

       BufferedInputStream bis=new BufferedInputStream(new FileInputStream("a.txt"));

       //创建字节缓冲输出流对象

       BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("b.txt"));

       //一次获取一个字节来复制文件

       int bys=0;

       while((bys=bis.read())!=-1){

           bos.write(bys);

           bos.flush();//刷新该流

       }

       bis.close();

       bos.close();

    }  

}

4:复制图片:4种方式

package InputDemo;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

/**

 * 需求:复制图片:4种方式:对于图片这类比较大的文件,可以选择高效字节流的两种方法以及高效字符流的两种方法

 * 1.定义四个方法,分别将图片e:JAVA\\1.jpgcopy.jpg这两个参数传入

 * 2.分别定义输入流对象,用来封装数据源

 * 3.再定义输出流对象,来封装目的地

 * 4.一次获取文件,然后写文件,进行复制

 * 5.关闭流资源,对于字符类型每写完数据之后需要刷新该流

 * */

public class CopytText_02 {

    public static void main(String[] args) throws IOException {

//     method1("e:\\JAVA\\1.jpg","copy.jpg");//该方法是用高效字节流的一次获取一个字节来复制文件

//     method2("e:\\JAVA\\1.jpg","copy.jpg");//该方法是高效字节流的一次获取一个字节数组来复制文件

//     method3("e:\\JAVA\\1.jpg","copy.jpg");//该方法是高效字符流的一次获取一个字符来复制文件

       method4("e:\\JAVA\\1.jpg","copy.jpg");//该方法是高效字符流的一次获取一个字符数组来复制文件

    }

    private static void method4(String s1, String s2) throws IOException {

       // 创建高效字符输入流对象

       BufferedReader br=new BufferedReader(new FileReader(s1));

       //创建高效字符输出流对象

       BufferedWriter bw=new BufferedWriter(new FileWriter(s2));

       //一次获取一个字符数组

       char[] ch=new char[1024];

       int len=0;

       while((len=br.read(ch))!=-1){

           bw.write(ch, 0, len);

           bw.flush();//刷新该流

       }

       br.close();

       bw.close();

    }

//  private static void method3(String s1, String s2) throwsIOException {

//     // 创建高效字符输入流对象

//     BufferedReader br=new BufferedReader(new FileReader(s1));

//     //创建高效字符输出流对象

//     BufferedWriter bw=new BufferedWriter(new FileWriter(s2));

//     //一次获取一个字符

//     int ch=0;

//     while((ch=br.read())!=-1){

//         bw.write(ch);

//         bw.flush();//刷新该流

//     }

//     br.close();

//     bw.close();

//  }

//

//  private static void method2(String s1, String s2) throwsIOException {

//     //创建高效字节输入流对象

//     BufferedInputStream bis=new BufferedInputStream(newFileInputStream(s1));

//     //创建高效字节输出流对象

//     BufferedOutputStream bos=new BufferedOutputStream(newFileOutputStream(s2));

//     //一次获取一个字节数组来复制文件

//     byte[] bys=new byte[1024];

//     int len=0;

//     while((len=bis.read(bys))!=-1){

//         bos.write(bys, 0, len);

//     }

//     bis.close();

//     bos.close();

//    

//  }

//

//  private static void method1(String s1, String s2) throwsIOException {

//     // 创建高效字节输入流对象

//     BufferedInputStream bis=new BufferedInputStream(newFileInputStream(s1));

//     //创建高效字节输出流对象

//     BufferedOutputStream bos=new BufferedOutputStream(newFileOutputStream(s2));

//     //一次获取一个字节

//     int bys=0;

//     while((bys=bis.read())!=-1){

//         bos.write(bys);

//     }

//     bis.close();

//     bos.close();

//  }

}

5:已知s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl”

 请编写程序读取数据内容,把数据排序后写入ss.txt中。

package PropertiesText;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.Arrays;

/**

 * 需求:已知s.txt文件中有这样的一个字符串:hcexfgijkamdnoqrzstuvwybpl请编写程序读取数据内容,

 * 把数据排序后写入ss.txt中。

 * 1.在当前项目下创建s.txt并在文件中输入hcexfgijkamdnoqrzstuvwybpl一行字符串

 * 2.创建字符缓冲输入流对象,用来封装数据源

 * 3.获取该文件,使用输入流的特有方法,一次获取一行

 * 4.将获取到的字符串转换为字符数组,然后用Arrays类的Sort()方法对其进行排序,最后在转换为字符串

 * 5.创建字符缓冲输出流的对象,封装SS.txt将排好序的字符串写入该文件中

 * */

public class PropertiesText_04 {

    public static void main(String[] args) throws IOException {

       BufferedReader br=new BufferedReader(new FileReader("s.txt"));//创建字符缓冲输入流对象

      

       //获取该文件中的字符串

       String str = br.readLine();

       //关闭流资源

       br.close();

       //将该字符串转换为字符数组

       char[] array = str.toCharArray();

       Arrays.sort(array);//对该字符数组进行排序

       //将排好序的字符数组转换为字符串

       String str2=new String(array);

      

       //创建字符缓冲输出流对象,将排好序的字符串写入ss.txt文件中

       BufferedWriter bw=new BufferedWriter(new FileWriter("ss.txt"));

       bw.write(str2);

       bw.newLine();//插入换行符

       bw.flush();

       bw.close();

    }

}

6:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件

猜你喜欢

转载自blog.csdn.net/fath_kevin/article/details/78682391