文件流:输出流:

package io;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

/**

  • JAVA IO 输入与输出 Input和Output

  • java将读写功能按照方向划分为输入与输出:

  • 输入负责读取,是从外界进入到我们的程序的方向

  • 输出负责写出,是从我们的程序到外界的方向

  • java将IO比喻为是"流",英文是:Stream

  • 像水流一样,我们向着同一侧方向顺序移动的过程,只不过在java io中我们的流是字节流,流动的是

  • 字节。

  • 而这里JAVA的IO流可以想象为是连接我们程序与另一端的"管道",内部向着同一侧方向顺序移动字节。

  • java.io.InputStream和OutputStream是所有字节输入与输出流的超类,本身是抽象类,不可以

  • 实例化,里面定义了基本的读写字节的相关方法。

  • 文件流

  • java.io.FileInputStream和FileOutputStream

  • 文件流是连接文件与程序的管道,负责对文件进行读写的流。

  • java.io.FileInputStream继承自InputStream,里面定义了读取字节的相关方法。

  • java.io.FileOutputStream继承自OutputStream,里面定义了写出字节的相关方法。

    /

    public class FOSDemo {

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

    //向当前项目目录中的文件fos.dat中写入字节数据

    //上述需求中的关键词:文件,写 应当使用文件输出流。

    FileOutputStream fos = new FileOutputStream("./fos.dat");//alt+回车 选择Add exception....

    /


    java.io.OutputStream超类上定义了写出一个字节的方法:

    void write(int d)

    写出一个字节,写出的是给定的int值对应的2进制的"低八位"

         文件流实现了上述方法,作用是向文件中写入1个字节。
    */
    /*
    int型的1对应的2进制:00000000 00000000 00000000 00000001
    write(1):写出的1对应2进制的"低八位"
    vvvvvvvv
    00000000 00000000 00000000 00000001
    写出的字节 write方法调用完毕后,fos.dat中的样子:
    00000001
    */
    fos.write(1);
    /*
    int型的3对应的2进制:00000000 00000000 00000000 00000011
    write(3):写出的3对应2进制的"低八位"
    vvvvvvvv
    00000000 00000000 00000000 00000011
    写出的字节 write方法调用完毕后,fos.dat中的样子:
    00000001 00000011
    */
    fos.write(3); System.out.println("写出完毕!");
    fos.close();//流使用完毕要关闭来释放资源

    }

    }

文件流:读取流:

package io;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

/**

  • 文件输入流,用于从文件中读取字节数据

    /

    public class FISDemo {

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

    //将当前项目目录下的fos.dat文件读取回来

    FileInputStream fis = new FileInputStream("fos.dat");

    /


    java.io.InputStream超类上定义了读取一个字节的方法:

    int read()

    读取1个字节,并将对应的2进制存入返回的int值的"低八位"上,而高24位2进制全部

    补0.

    如果返回值为int型的整数-1,则表达读取到了流的末尾

    /

    /


    fos.dat中的样子:

    00000001 00000011

         第一次调用int d = fis.read()
    读取的是fos.dat文件第一个字节:
    00000001 00000011
    ^^^^^^^^
    读取的字节 read方法返回的int值2进制的样子:00000000 00000000 00000000 00000001
    因此int d = fis.read()之后d的整数为:1
    */
    int d = fis.read();
    System.out.println(d);
    /*
    fos.dat中的样子:
    00000001 00000011 第二次调用d = fis.read()
    读取的是fos.dat文件第二个字节:
    00000001 00000011
    ^^^^^^^^
    读取的字节 read方法返回的int值2进制的样子:00000000 00000000 00000000 00000011
    因此d = fis.read()之后d的整数为:3
    */
    d = fis.read();
    System.out.println(d); /*
    fos.dat中的样子:
    00000001 00000011 第三次调用d = fis.read()
    读取的是fos.dat文件第三个字节:
    00000001 00000011
    ^^^^^^^^
    文件末尾! read方法返回的int值2进制的样子:11111111 11111111 11111111 11111111
    因此d = fis.read()之后d的整数为:-1
    */
    d = fis.read();
    System.out.println(d);//-1 fis.close();

    }

    }

向文件中写入文本数据:

package io;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.nio.charset.StandardCharsets;

/**

  • 向文件中写入文本数据

    /

    public class WriteStringDemo {

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

    //向文件fos.txt中写入字符串

    /


    文件流的两个构造方法默认为覆盖模式:

    FileOutPutStream(String path)

    FileOutputStream(File file)

    上述两个构造器创建时,如果指定的文件已经存在了,则会将该文件清空(变成0字节),

    之后通过当前流写出的数据会陆续写入文件中保存。

         文件流的两个构造方法为追加模式:
    FileOutPutStream(String path,boolean append)
    FileOutputStream(File file,boolean append)
    如果第二个参数为true,则文件流打开了追加模式。
    当创建文件流时如果指定的文件已经存在,则文件原数据全部保留,通过当前流写出的
    数据会陆续的追加到文件末尾
    */

// File file = new File("fos.txt");

// FileOutputStream fos = new FileOutputStream(file);

    FileOutputStream fos = new FileOutputStream("fos.txt",true);

// String line = "爱你孤身走暗巷";

String line = "爱你~";

/*

String提供的方法:

byte[] getBytes(Charset charset)

将当前字符串按照指定的字符集转换为一组字节

*/

byte[] data = line.getBytes(StandardCharsets.UTF_8);

fos.write(data);

    line = "如果你突然打了个喷嚏,啊~那一定是我在想你";
data = line.getBytes(StandardCharsets.UTF_8);
fos.write(data); System.out.println("写出完毕!");
fos.close(); }

}

从文件中读取字符串:

package io;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.nio.charset.StandardCharsets;

/**

  • 从文件中读取字符串

    /

    public class ReadStringDemo {

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

    //将fos.txt文件中所有字符读取回来

    File file = new File("fos.txt");

    /


    FileInputStream(String path)

    FileInputStream(File file)

    /

    FileInputStream fis = new FileInputStream(file);

    byte[] data = new byte[(int)file.length()];

    fis.read(data);

    /


    String提供的构造器

    String(byte[] data,Charset charset)

    将给定的字节数组data中所有的字节按照给定的字符集charset转换为一个字符串

    */

    String line = new String(data, StandardCharsets.UTF_8);

    System.out.println(line);

     fis.close();

    }

    }

用lambda表达式创建文件过滤器:

package lambda;

import java.io.File;

import java.io.FileFilter;

/**

  • 用lambda表达式创建文件过滤器
  • 获取当前项目目录下名字中含有字母o的所有子项

    */

    public class Test {

    public static void main(String[] args) {

    File dir = new File(".");

    File[] subs = dir.listFiles(file -> file.getName().contains("o"));

    for(int i=0;i<subs.length;i++){

    System.out.println(subs[i].getName());

    }

    }

    }

api进阶Day2(低级流)文件流的输出流、读取流。向文件中写入文本数据、读取文件中的字符串、用lambda表达式创建文件过滤器。的更多相关文章

  1. C++中关于文本内容的实用操作集合(新)(添加一些关于文件流的介绍)

    首先先给大家一个链接:http://baike.baidu.com/view/1679747.htm 主要是关于ios的使用,头文件要include<ios>,然后就可以调用下面的一些操作 ...

  2. 【原创】大数据基础之HDFS(1)HDFS新创建文件如何分配Datanode

    HDFS中的File由Block组成,一个File包含一个或多个Block,当创建File时会创建一个Block,然后根据配置的副本数量(默认是3)申请3个Datanode来存放这个Block: 通过 ...

  3. 用pandas库对csv文件中的文本数据进行分析处理

    #数据分析 import pandas import csv old_path = r'd:\2000W\200W-400W.csv' f = open(old_path,'r',encoding=' ...

  4. 慕课网_文件传输基础——Java IO流

    第1章 文件的编码 1-1 文件的编码 (15:07) 第2章 File 类的使用 2-1 File 类常用 API 介绍 (10:50) import java.io.File; import ja ...

  5. IO流(一)__File对象和字符流FileWriter FileReader

    IO流:IO流用来处理设备之间的数据传输,Java对于流的操作对象都在IO包中将外设中的数据读取到内存中:输入将内存的数写入到外设中:输出 流分为字节流和字符流字符流的由来:其实就是字节流读取文字字节 ...

  6. Java基础---Java---IO流-----对象的序列化、管道流、RandomAccessFile、数据类型的流对象DataStream、ByteArrayStream

    ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化. ObjectOutputStream 和 ObjectInputStream ...

  7. 背水一战 Windows 10 (89) - 文件系统: 读写文本数据, 读写二进制数据, 读写流数据

    [源码下载] 背水一战 Windows 10 (89) - 文件系统: 读写文本数据, 读写二进制数据, 读写流数据 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 读写文本数 ...

  8. Java 创建文件夹和文件,字符串写入文件,读取文件

    两个函数如下: TextToFile(..)函数:将字符串写入给定文本文件: createDir(..)函数:创建一个文件夹,有判别是否存在的功能. public void TextToFile(fi ...

  9. Android创建文件夹及文件并写入数据

    package elwin.fei.mobileaudio; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  10. 代码实现将键盘录入的数据拷贝到当前项目下的text.txt文件中,键盘录入数据当遇到quit时就退出

    package com.looaderman.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; ...

随机推荐

  1. EBS的配置文件

    默认账套 select fnd_profile.value('GL_SET_OF_BKS_ID') FROM DUAL; >> 2026 这样就能通过2026去获取一些账套上的配置 比如c ...

  2. wpf DataGrid相关总结

    1.去掉外边蓝框,设置BorderThickness="0"

  3. 渗透测试工具sqlmap基础教程 【转】

    转载请注明出处:http://blog.csdn.net/zgyulongfei/article/details/41017493 作者:羽龍飛 本文仅献给想学习渗透测试的sqlmap小白,大牛请绕过 ...

  4. 自考网络原理:安全套接字层SSL

    对ssl/tls的理解 前:SSL; 后:TLS: 以下是B站上的up主讲的,非常的深入浅出,讲的很好.感谢技术蛋老师. https://www.bilibili.com/video/BV1KY411 ...

  5. 2.9 系统IO

    iostream: 输入流 cin; c 指代 character 输出流 cout, cerr(立即刷新缓冲区), clog(缓冲区满后刷新) 命名空间 访问方式 namespace NameSpa ...

  6. 解决django中的跨域问题

    解决django中的跨域问题: Django项目中出现跨域问题,用第三方包django-cors-headers来解决跨域问题. 安装:pip install django-cors-headers; ...

  7. IDEA debug时拷贝数据 Evaluate Expression窗口

    今日份鸡汤:别人再好,也是别人.自己再不堪,也是自己,独一无二的自己.只要努力去做最好的自己,一生足矣.为自己的人生负责,为自己的梦想买单. 用IDEA调试时候经常需要拷贝变量值出来排查,特别是数据结 ...

  8. 基于SDN控制器(ONOS)实现量子设备配置管理

    基础知识 基于SDN控制器(ONOS)实现量子设备配置管理,首先选择合适的南向协议.OpenFlow与NETCONF是两个最适合企业网场景使用的协议.目前各大网络厂商的网络设备都已基本宣称支持NETC ...

  9. APP数据指标体系分析

    一.APP的数据指标体系主要分为五个维度,包括用户规模与质量.参与度分析.渠道分析.功能分析和用户属性分析. 1.用户规模和质量 用户规模和质量是APP分析最重要的维度,其指标也是相对其他维度最多,数 ...

  10. 2022-4-8内部群每日三题-清辉PMP

    1.在创建最小可行产品(MVP)时,哪种方法至关重要? A.冒烟测试. B.演示. C.按版本发布. D.客户访谈. 2.敏捷项目团队决定修改使用中的测试过程,这一决定在哪一次会议上产生的? A.sp ...