关于文件流的使用
来源:互联网 发布:java代码块执行顺序 编辑:程序博客网 时间:2024/06/06 10:43
前言:
IO流体系:
FileInputStream和FileOutputStream的代码示例如下:
FileReader和FileWriter的代码示例如下:
IO流体系:
FileInputStream和FileOutputStream的代码示例如下:
package com.atguigu.java;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import org.junit.Test;/* * 1.流的分类: * 按照数据流向的不同:输入流 输出流 * 按照处理数据的单位的不同:字节流 字符流(处理的文本文件) * 按照角色的不同:节点流(直接作用于文件的) 处理流 * * 2.IO的体系 * 抽象基类 节点流(文件流) 缓冲流(处理流的一种) * InputStream FileInputStream BufferedInputStream * OutputStream FileOutputStream BufferedOutputStream * Reader FileReader BufferedReader * Writer FileWriter BufferedWriter */public class TestFileInputOutputStream { @Test public void testCopyFile(){ long start = System.currentTimeMillis(); // String src = "C:\\Users\\shkstart\\Desktop\\1.avi"; // String dest = "C:\\Users\\shkstart\\Desktop\\2.avi"; String src = "dbcp.txt"; String dest = "dbcp2.txt"; copyFile(src,dest); long end = System.currentTimeMillis(); System.out.println("花费的时间为:" + (end - start));//3198 }// 实现文件复制的方法 public void copyFile(String src, String dest) { // 1.提供读入、写出的文件 File file1 = new File(src); File file2 = new File(dest); // 2.提供相应的流 FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream(file1); fos = new FileOutputStream(file2); // 3.实现文件的复制 byte[] b = new byte[1024]; int len; while ((len = fis.read(b)) != -1) { // fos.write(b);//错误的写法两种: fos.write(b,0,b.length); fos.write(b, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } }// 从硬盘读取一个文件,并写入到另一个位置。(相当于文件的复制) @Test public void testFileInputOutputStream() { // 1.提供读入、写出的文件 File file1 = new File("C:\\Users\\shkstart\\Desktop\\1.jpg"); File file2 = new File("C:\\Users\\shkstart\\Desktop\\2.jpg"); // 2.提供相应的流 FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream(file1); fos = new FileOutputStream(file2); // 3.实现文件的复制 byte[] b = new byte[20]; int len; while ((len = fis.read(b)) != -1) { // fos.write(b);//错误的写法两种: fos.write(b,0,b.length); fos.write(b, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } }// FileOutputStream @Test public void testFileOutputStream() { // 1.创建一个File对象,表明要写入的文件位置。 // 输出的物理文件可以不存在,当执行过程中,若不存在,会自动的创建。若存在,会将原有的文件覆盖 File file = new File("hello2.txt"); // 2.创建一个FileOutputStream的对象,将file的对象作为形参传递给FileOutputStream的构造器中 FileOutputStream fos = null; try { fos = new FileOutputStream(file); // 3.写入的操作 fos.write(new String("I love China!").getBytes()); } catch (Exception e) { e.printStackTrace(); } finally { // 4.关闭输出流 if (fos != null) { try { fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }@Test public void testFileInputStream3() { // abcdefgcde FileInputStream fis = null; try { File file = new File("hello.txt"); fis = new FileInputStream(file); byte[] b = new byte[5];// 读取到的数据要写入的数组。 int len;// 每次读入到byte中的字节的长度 while ((len = fis.read(b)) != -1) { // for (int i = 0; i < len; i++) { // System.out.print((char) b[i]); // } String str = new String(b, 0, len); System.out.print(str); } } catch (IOException e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}// 使用try-catch的方式处理如下的异常更合理:保证流的关闭操作一定可以执行@Test public void testFileInputStream2() { // 2.创建一个FileInputStream类的对象 FileInputStream fis = null; try { // 1.创建一个File类的对象。 File file = new File("hello.txt"); fis = new FileInputStream(file); // 3.调用FileInputStream的方法,实现file文件的读取。 int b; while ((b = fis.read()) != -1) { System.out.print((char) b); } } catch (IOException e) { e.printStackTrace(); } finally { // 4.关闭相应的流 if (fis != null) { try { fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }// 从硬盘存在的一个文件中,读取其内容到程序中。使用FileInputStream// 要读取的文件一定要存在。否则抛FileNotFoundException @Test public void testFileInputStream1() throws Exception { // 1.创建一个File类的对象。 File file = new File("hello.txt"); // 2.创建一个FileInputStream类的对象 FileInputStream fis = new FileInputStream(file); // 3.调用FileInputStream的方法,实现file文件的读取。 /* * read():读取文件的一个字节。当执行到文件结尾时,返回-1 */ // int b = fis.read(); // while(b != -1){ // System.out.print((char)b); // b = fis.read(); // } int b; while ((b = fis.read()) != -1) { System.out.print((char) b); } // 4.关闭相应的流 fis.close(); }}
FileReader和FileWriter的代码示例如下:
package com.atguigu.java;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import org.junit.Test;/* * 使用FileReader、FileWriter 可以实现文本文件的复制。 * 对于非文本文件(视频文件、音频文件、图片),只能使用字节流! */public class TestFileReaderWriter { @Test public void testFileReaderWriter(){ //1.输入流对应的文件src一定要存在,否则抛异常。输出流对应的文件dest可以不存在,执行过程中会自动创建 FileReader fr = null; FileWriter fw = null; try{ //不能实现非文本文件的复制 // File src = new File("C:\\Users\\shkstart\\Desktop\\1.jpg"); // File dest = new File("C:\\Users\\shkstart\\Desktop\\3.jpg"); File src = new File("dbcp.txt"); File dest = new File("dbcp1.txt"); //2. fr = new FileReader(src); fw = new FileWriter(dest); //3. char[] c = new char[24]; int len; while((len = fr.read(c)) != -1){ fw.write(c, 0, len); } }catch(Exception e){ e.printStackTrace(); }finally{ if(fw != null){ try { fw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(fr != null){ try { fr.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}@Test public void testFileReader(){ FileReader fr = null; try { File file = new File("dbcp.txt"); fr = new FileReader(file); char[] c = new char[24]; int len; while((len = fr.read(c)) != -1){ String str = new String(c, 0, len); System.out.print(str); } }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(fr != null){ try { fr.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }}
0 0
- 关于文件流的使用
- 关于ini文件的使用
- 关于MAP文件的使用
- 关于MAP文件的使用
- 关于property文件的使用
- 关于使用INI文件的问题
- 关于ASP 文件类的使用
- 关于MAP文件的使用 - j2mefans
- 关于MAP文件的使用(转贴)
- 关于MAP文件的使用(转贴)
- 关于文件上传控件FileUpload的使用
- C语言关于头文件的使用
- C语言关于头文件的使用
- C语言关于头文件的使用
- 关于MAP文件的使用----crash
- 关于MAP文件的使用(转贴)
- 关于查看文件使用情况的命令
- 关于MAP文件的使用(转贴)
- C++primer第五版笔记-第十章泛型算法
- Collections工具类的使用
- 关于泛型的使用
- 自定义枚举类及使用enum的枚举类
- File类的常用方法
- 关于文件流的使用
- 关于缓冲流的使用
- 关于标准输入输出流及转换流的使用
- 对象流的使用
- RandomAccessFile的使用
- 在Java中,关于线程的创建,方法及生命周期
- 当月 当年sql
- 关于equals()和toString()方法
- cc2541修改广播信号(以蓝牙接入微信为例)