一、流的概念

流:数据在数据源(文件)和程序(内存)之间经历的路径。

输入流:数据从数据源(文件)到程序(内存)的路径。

输出流:数据从程序(内存)到数据源(文件)的路径。

以内存为参照,如果数据向内存流动,则是输入流,反之则是输出流

字节流:FileInputStream用来读取文件

FileOutputStream用来写入到文件

字符流:FileReader\BufferedReader用来读取文件

FileWrite\BufferedWrite用来写入到文件

二、操作用法

1.获取文件对象,针对该对象进行一些基本操作

1 //创建一个文件对象

2 File f = new File("F:\\test\\sheet.xls");3 //得到文件的路径

4 System.out.println("文件路径"+f.getAbsolutePath());5 //得到文件的大小,字节数

6 System.out.println("文件大小"+f.length());7 //可读属性

8 System.out.println("可读"+f.canRead());

View Code

2.创建文件(判断该文件是否存在,若存在则弹出提示,若不存在则进行创建)

1 //创建文件

2 File f = new File("F:\\test\\test.txt");3 //判断该文件是否存在

4 if(!f.exists())5 {6 //可以创建

7 try{8 f.createNewFile();9 } catch(IOException e) {10 e.printStackTrace();11 }12 }13 else

14 {15 System.out.println("改文件已存在,创建失败!");16 }

View Code

3.创建文件夹(条件同上)

1 //创建文件夹

2 File f = new File("F:\\test");3 if (f.isDirectory())//判断是不是一个文件夹

4 {5 System.out.println("创建失败");6 } else{7 f.mkdir();8 }

View Code

Tips:这里写明一下isFile()、exists()和isDirectory()的区别

isFile():判断是否文件,也许可能是文件或者目录。

exists():判断是否存在,可能不存在。

isDirectory(): 判断该对象是否是一个文件夹。

4.列出某文件夹下面的所有文件(此时对象还是File,File没有文件和文件夹之分,对电脑来讲,文件夹只是一种特殊的文件)

1 File f = new File("F:\\testt");2 if(f.isDirectory()) {3 File filelists[] =f.listFiles();4 for (int i = 0; i < filelists.length; i++)5 {6 System.out.println("文件名是:"+filelists[i].getName());7 }8 }

View Code

5.FileInputStream的使用

1 /**

2 * 演示FileInputStream类的使用3 */

4 packagecom.test2;5

6 import java.io.*;7

8 public classDemo11_2 {9 public static voidmain(String[] args) {10

11 //得到一个文件对象

12 File f = new File("F:\\tt\\test.txt");13 FileInputStream fis = null;14 //因为file没用读写的能力,所以需要使用FileInputStream

15 try{16 fis = newFileInputStream(f);17

18 //定义一个字节数组(相当于一个缓存,如果你的对象"f"是一个很大的文件,内存不够用,所以只能一点一点地读取)

19 byte[] bytes = new byte[1024];20 //实际读取到的字节数

21 int n = 0;22 //循环读取23 //如果read()返回-1,则说明读取完毕

24 while ((n = fis.read(bytes)) != -1) {25 //将字节转换成string26 //此时实例化s时,要注意指定编码格式,电脑上文档默认的是GBK,而我这边默认的是utf-8,27 //所以如果不指定格式的话,最后输出的中文会出现乱码

28 String s = new String(bytes, 0, n,"GBK");29 System.out.println(s);30 }31 } catch(Exception e) {32 e.printStackTrace();33 } finally{34 //关闭文件流(关键)

35 try{36 if (fis != null) {37 fis.close();38 }39 } catch(IOException e) {40 e.printStackTrace();41 }42 }43 }44 }

View Code

读取成功..

6.FileOutputStream的使用

1 /**

2 * 演示FileOutputStream的使用3 */

4 packagecom.test2;5

6 import java.io.*;7

8 public classDemo11_3 {9 public static voidmain(String[] args) {10 File f = new File("F:\\tt\\test.txt");11 //字节输出流

12 FileOutputStream fos = null;13

14 try{15 fos = newFileOutputStream(f);16

17 String s = "Westlife - Better man\r\n西城男孩 - 更完美的人";18

19 fos.write(s.getBytes());20 } catch(Exception e) {21 e.printStackTrace();22 } finally{23 try{24 if (fos != null) {25 fos.close();26 }27 } catch(IOException e) {28 e.printStackTrace();29 }30 }31

32 }33 }

View Code

写入成功..

7.字节流的操作(通过写入写出来实现图片的拷贝,操作byte)

1 /**

2 * 图片拷贝3 */

4 packagecom.test2;5

6 import java.io.*;7

8 public classDemo11_4 {9 public static voidmain(String[] args) {10 //先把图片读入到内存,再写到某个文件11 //因为是二进制文件,因此只能用字节流完成

12 File f = new File("F:\\tt\\Westlife.jpg");13 //输入流

14 FileInputStream fis = null;15 //输出流

16 FileOutputStream fos = null;17

18 try{19 fis = newFileInputStream(f);20 //或者省略上面实例化File,直接在这里fis = new FileInputStream("F:\tt\Westlife.jpg");也可以

21

22 fos = new FileOutputStream("D:\\练习\\Westlife.jpg");23 byte[] bytes = new byte[1024];24 int n = 0;//记录实际读取到的字节数25 //循环读取

26 while ((n = fis.read(bytes)) != -1) {27 //输出到指定文件

28 fos.write(bytes);29 }30 } catch(Exception e) {31 e.printStackTrace();32 } finally{33 //关闭打开的文件流

34 if (fos != null) {35 try{36 fos.close();37 } catch(IOException e) {38 e.printStackTrace();39 }40 }41

42 if (fis != null) {43 try{44 fis.close();45 } catch(IOException e) {46 e.printStackTrace();47 }48 }49 }50 }51 }

View Code

8.字符流的操作(操作char)

1 /**

2 * 字符流操作3 */

4 packagecom.test2;5

6 import java.io.*;7

8 public classDemo11_5 {9 public static voidmain(String[] args) {10 //文件取出字符流对象(输入流)

11 FileReader fr = null;12 //写入到文件(输出流)

13 FileWriter fw = null;14

15 //创建一个fr对象

16 try{17 //创建输入对象

18 fr = new FileReader("F:\\tt\\test.txt");19 //创建输出对象

20 fw = new FileWriter("D:\\练习\\test2.txt");21

22

23 //读入到内存

24 int n = 0;//记录实际读取到的字符数

25 char c[] = new char[1024];26 while ((n = fr.read(c)) != -1) {27 //输入28 //String s = new String(c,0,n);29 //System.out.println(s);30 //输出31 //方法一:fw.write(c);

32 方法二://指定输出的起始位置

33 fw.write(c, 0, n);34 }35 } catch(Exception e) {36 e.printStackTrace();37 } finally{38 //关闭文件流

39 if (fr != null) {40 try{41 fr.close();42 } catch(IOException e) {43 e.printStackTrace();44 }45 }46

47 if (fw != null) {48 try{49 fw.close();50 } catch(IOException e) {51 e.printStackTrace();52 }53 }54 }55

56 }57 }

View Code

9.缓冲字符流(提高了效率,直接操作String)

1 /**

2 * 缓冲字符流操作3 */

4 packagecom.test2;5

6 import java.io.*;7

8 public classDemo11_6 {9 public static voidmain(String[] args) {10 BufferedReader br = null;11 BufferedWriter bw = null;12

13 //先创建FileReader对象

14 FileReader fr = null;15

16 //创建FileWriter对象

17 FileWriter fw = null;18 try{19 fr = new FileReader("F:\\tt\\test.txt");20 br = newBufferedReader(fr);21

22

23 fw = new FileWriter("D:\\练习\\test3.txt");24 bw = newBufferedWriter(fw);25

26 //循环读取文件

27 String s = "";28 while ((s = br.readLine()) != null) {29 //读取到内存30 //System.out.println(s);31

32 //输出到磁盘

33 bw.write(s+"\r\n");34 }35 } catch(Exception e) {36 e.printStackTrace();37 } finally{38 //注:如果文件流不关闭的话会影响后续对该文件的操作,比如可能读不到该文件的数据

39 if (br != null) {40 try{41 {42 br.close();43 }44 } catch(IOException e) {45 e.printStackTrace();46 }47 }48

49 if (bw != null) {50 try{51 {52 bw.close();53 }54 } catch(IOException e) {55 e.printStackTrace();56 }57 }58 }59 }60 }

View Code

java文件流写入文件_JAVA IO流编程 实现文件的写入、写出以及拷贝相关推荐

  1. java io流拒绝访问_JAVA IO流 - 张宏良的个人空间 - OSCHINA - 中文开源技术交流社区...

    IO流 一.File类的使用 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关 File能新建.删除.重命名文件和目录,但File不能访问文件内容本身.如果需要访问文件内容本身 ...

  2. java io流屏幕输出_java IO流 之 输出流 OutputString()的使用

    FileOutPutStream:子类,写出数据的通道 步骤: 1.获取目标文件 2.创建通道(如果原来没有目标文件,则会自动创建一个) 3.写入数据 write() 4.释放资源 注意: (1)如果 ...

  3. java文件流读取异常_Java IO流的FileInputStream读取文件的问题,不同写法输出不一样...

    利用FileInputStream的read()方法读取文件时,读出的数据强制转换时用不同的写法,在控制台得出不同的显示. 出问题的写法: 正确输出的写法: 以下为两种输出,错误输出是输出一串数字,正 ...

  4. java io流不关闭_Java IO流关闭问题的深入研究

    前几天看了一篇文章(见参考文章),自己动手试了下,发现有些不一样结论,作博客记录下,本文主要研究两个问题: 包装流的close方法是否会自动关闭被包装的流? 关闭流方法是否有顺序? 包装流的close ...

  5. java的io流的file类_java IO流 (一) File类的使用

    1.File类的理解 * 1. File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) * 2. File类声明在java.io包下 * 3. File类中涉及到关于文件或文件目录的创建.删 ...

  6. Java基础学习(二十七)之IO流

    1. File 1.1 File类概述和构造方法(myFile中的com.itheima_01中的FileDemo01) File:它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对 ...

  7. 我的Java学习笔记(六)----IO流

    IO流 1. File 1.1 File类概述和构造方法 File:它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在的文件,仅仅是 ...

  8. Java基础(十五)IO流---字符流(Reader、Writer)、字节流(InputStream、OutputStream)

    IO流(应用广泛) 1.概念与三要素 本质是一套用于数据传输的机制 分类: 根据传输的方向(参照物–内存) 输入流:往内存传输数据 输出流:从内存往外传输数据 根据数据传输方式: 字符流:底层以字符形 ...

  9. Java中的File类和IO流

    Java中的File类和IO流 File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. File的分隔符 import java.io.Fi ...

  10. Java IO流大闯关--IO流的常用实现类

    这个系列的博客主要是对Java高级编程中IO流相关的知识点做一个梳理,内容主要包括File类.IO流原理及流的分类.文件流.缓冲流.转换流.标准输入输出流.打印流.数据流.对象流.随机存取文件流.NI ...

最新文章

  1. Transformer哪家强?Google爸爸辨优良!
  2. nagios监控haproxy(借助脚本)
  3. 计算机组成原理 — FPGA 现场可编程门阵列
  4. lombok使用基础教程
  5. android中webview loadUrl(String url,Map header)方法和postUrl(String url,byte[] postData)方法同时使用问题;...
  6. Hexo+码云+git快速搭建免费的静态Blog
  7. 经典C语言程序100例之二
  8. matlab 刻度间隔,matlab – 地图的主要和次要刻度?
  9. 《巴伦周刊》评选出全球最佳30位CEO:马化腾再次上榜
  10. uniapp微信小程序获取位置(高德SDK)
  11. 颜色空间YUV、RGB理解(二)
  12. 跟着鬼哥学爬虫-2-糗事百科
  13. 湘西州2021年高考成绩查询,2021年湘西高考状元名单公布,湘西文理科状元是谁多少分...
  14. 29个用于石油和天然气等行业的最佳 GIS 软件
  15. 【GIS开发】Esri Shapefile(.shp)矢量数据文件读取(C++、Python)
  16. PLSQL连接Oracle11g64位操作步骤
  17. html用bmob做留言,Bmob 之 简单使用
  18. 2022-2028年中国医用纺织品行业市场发展潜力及投资风险预测报告
  19. FastqC结果简介
  20. 在GPT分区的磁盘上创建ESP分区图文教程

热门文章

  1. 《世界因你不同》——打工生涯:发现别样的世界
  2. linux定时播放音乐,Linux:在录制/播放声音期间的定时
  3. M1、M2芯片Mac安装虚拟机
  4. 【机器学习项目实战10例】(九):基于特征工程完成对贷款数据集Lending Club的预处理
  5. 英语四级(万能写作)技巧
  6. php 教学目标,基于教学目标,共话教学设计
  7. python+pyecharts绘制股票k线图与日均收益率图
  8. 基于opencv-python的签名抠图程序
  9. Vue3 子组件向父组件传值的方法
  10. 2023基于微信小程序的奶茶店自助饭店点餐订餐系统平台(SSM+mysql)-JAVA.VUE(论文+开题报告+运行)