与C语言只有单一类型FILE*即可工作良好不同,java拥有一个包含各种流类型的流家族,其数量超过60个。所以java中文件和流的操作较复杂,下面简单介绍一些操作和流相互之间的区别。

1、将文本读入流。

处理文本输入流常用的方式是用BufferedReader类,它其中有一个方法readline,使得我们可以读入一行文本。

package com.zl.exercise;
import java.io.*;
public class Writer {
public static void main(String[] args){try{FileReader fr=new FileReader("F://File//a.txt");BufferedReader br=new BufferedReader(fr);String s=br.readLine();while(s!=null){System.out.println(s);s=br.readLine();}br.close();}catch(IOException e){e.printStackTrace();}
}
}

2、从流中将文本输出到文件中,即文本输出。常用的是FileOutputStream类,该类中常用方法是write。

package com.zl.exercise;
import java.io.*;
public class Output {
public static void main(String[] args) {File file=new File("F://File//Text.txt");String content="This is a file!";try{FileOutputStream fop=new FileOutputStream(file);if(!file.exists()){file.createNewFile();}byte[] byteContent=content.getBytes();fop.write(byteContent);fop.close();fop.flush();System.out.println("Done");}catch(IOException e){e.printStackTrace();}
}
}

3、将文本利用流从一个文本读入到另一文本中,用到BufferedReader类和PrintWrite类。BufferedReader类中所用方法是readline,PrintWrite类中所用方法是println。

package com.zl.exercise;
import java.io.*;
public class IODemo {public static void main(String[] args) {try{FileReader fr=new FileReader("F://File//a.txt");BufferedReader br=new BufferedReader(fr);FileWriter fw=new FileWriter("F://File//b.txt");PrintWriter pw=new PrintWriter(fw);String s=br.readLine();//System.out.println(s);while(s!=null){pw.println(s);s=br.readLine();}br.close();pw.close();}catch(IOException e){e.printStackTrace();}
}
}

文件和流中难以区分的概念:

1、File类和FileInputStream类

流类关注的是文件内容,所以FileInputStream类是流类,适用于读取文件中的内容,而File类关注的是文件在磁盘上的存储,File不属于文件流,只能代表一个文件或是目录的路径名而已,即用File是显示某一个目录下的文件。如果处理文件或者目录名,就应该使用File对象,而不是字符串。

2、FileInputStream类和DataInputStream类

FileInputStream是从文件系统中,读取的单位是字节,DataInputStream是数据输入流,读取的是java的基本数据类型。所以如果为了从文件中读取数字,首先需要创建一个FileInputStream,然后将其传递给DataInputStream的构造器。

FileInputStream fin=new FileInputStream("employee.dat");
DataInputStream din=new DataInputStream(fin);
double s=din.readDouble();

3、println方法和write方法

println方法和write方法都是从流中将数据写入到文件中,不同之处是当使用FileOutputStream类是使用write方法从流中读取,当使用PrintWrite类是使用println从流中读取。

4、PrintStream和PrintWriter

PrintWriter提供了PrintStream的所有打印方法,其方法也从不抛出IOException。与PrintStream的区别:作为处理流使用时,PrintStream只能封装OutputStream类型的字节流,而PrintWriter既可以封装OutputStream类型的字节流,还能够封装Writer类型的字符输出流并增强其功能。

java中文件和流处理相关推荐

  1. Java中使用字符流读取UTF-8和写出txt文件 乱码 问题

    乱码问题一直都是非常难受的问题,本文解决Java中使用字符流读取UTF-8和写出txt文件 乱码 话不多说,直接上图 输出结果: 使用代码: 解决:

  2. java 流的概念_举例讲解Java中的Stream流概念

    1.基本的输入流和输出流 流是 Java 中最重要的基本概念之一.文件读写.网络收发.进程通信,几乎所有需要输入输出的地方,都要用到流. 流是做什么用的呢?就是做输入输出用的.为什么输入输出要用&qu ...

  3. java直接调用复制文件,java中文件复制的4种方式,java文件的复制

    java中文件复制的4种方式,java文件的复制 今天一个同事问我文件复制的问题,他一个100M的文件复制的指定目录下竟然成了1G多,吓我一跳,后来看了他的代码发现是自己通过字节流复制的,定义的字节数 ...

  4. file相对路径java_浅谈java 中文件的读取File、以及相对路径的问题

    一.对于java项目中文件的读取 1.使用system 或是 系统的properties对象 ①直接是使用 string relativelypath=system.getproperty(" ...

  5. Java中的IO流(六)

    上一篇<Java中的IO流(五)>把流中的打印流PrintStream,PrintWriter,序列流SequenceInputStream以及结合之前所记录的知识点完成了文件的切割与文件 ...

  6. 猿创征文|Java中的IO流大家族 (两万字详解)

    目录 IO流 概述 分类 四大家族 需要掌握的16个流 文件专属 FileInputstream(读 字节) FileInputStream类的其他常用方法 FileOutputStream (写 字 ...

  7. 深圳Java培训:Java中的对象流和序列化

    深圳Java培训:Java中的对象流和序列化 最近,在讲流的使用,其中对象流的作用其实就是将自定义类的对象与流之间相互转换的流. 看起来还是挺简单的,那么看下面的例子: public class St ...

  8. java中文件的上传和下载:文件上传和下载原理

    在TCP/IP中,我们知道最早的上传机制为FTP,它是指将文件由客户端发送到服务器的标准机制.然而我们在jsp编程中不能使用FTP来上传文件,这是由于jsp运行机制决定的.               ...

  9. 四十三、深入Java中的数组流,数据流和对象流操作

    @Author:Runsen @Date:2020/6/8 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  10. java中文件的操作讲解

    1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:\xyz\test.txt 代表了test.txt文件的绝对路径.http://ww ...

最新文章

  1. io python 读取pdf_实用又好用,6 款 Python 特殊文本格式处理库推荐
  2. jsp重定向与请求转发的路径404问题
  3. R语言all函数、any函数判断逻辑向量(logical vector)实战
  4. nvm 装 nodejs 重启终端失效的解决方法
  5. quality center 支持的平台
  6. Hadoop学习--HBase与MapReduce的使用
  7. 搭建Maven环境及其基本知识
  8. 拟物设计和Angular的实现 - Material Design (持续更新)
  9. 1-2 Verilog 4位 二选一 多路选择器
  10. 基于C++的P2P穿透文件传输
  11. [课业] 25 | 数据库基础 | 基础SQL查询语言
  12. S32k Flexcan 手写驱动,不使用SDK
  13. Elasticsearch 摄取节点(Ingest Node)使用Pipeline预处理文档
  14. 服务器里那个文件是地图的爆率,关于普通图爆率研究
  15. Java基础-数组深入之经典案例实现-点名器
  16. linux编写学生选课系统
  17. 删除链表的结点——《剑指offer》
  18. 产业区块链一周动态丨新四板跑步上链,国家区块链漏洞库定级细则发布
  19. 张驰课堂:六西格玛测量系统的误差分析与判定
  20. 有了这个开源项目,让你分分钟搞定第三方授权登录

热门文章

  1. 一个简单的软件工程流程
  2. 《电路分析导论(原书第12版)》一词汇表
  3. 企业从信息化角度解读智慧城市,难以根治城市病
  4. 开发者的实用 Vim 插件(二)
  5. Hive基本原理及环境搭建
  6. Android工具箱之文件目录
  7. 【Python之旅】第四篇(一):Python装饰器
  8. thinkphp对数据库操作有哪些内置函数
  9. 修改Wordpress插件---advanced-access-manager.1.7.3---
  10. 如何对系统日志中事件 ID 9、事件 ID 11 和事件 ID 15 错误消息进行故障排除