api进阶Day2(低级流)文件流的输出流、读取流。向文件中写入文本数据、读取文件中的字符串、用lambda表达式创建文件过滤器。
文件流:输出流:
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表达式创建文件过滤器。的更多相关文章
- C++中关于文本内容的实用操作集合(新)(添加一些关于文件流的介绍)
		首先先给大家一个链接:http://baike.baidu.com/view/1679747.htm 主要是关于ios的使用,头文件要include<ios>,然后就可以调用下面的一些操作 ... 
- 【原创】大数据基础之HDFS(1)HDFS新创建文件如何分配Datanode
		HDFS中的File由Block组成,一个File包含一个或多个Block,当创建File时会创建一个Block,然后根据配置的副本数量(默认是3)申请3个Datanode来存放这个Block: 通过 ... 
- 用pandas库对csv文件中的文本数据进行分析处理
		#数据分析 import pandas import csv old_path = r'd:\2000W\200W-400W.csv' f = open(old_path,'r',encoding=' ... 
- 慕课网_文件传输基础——Java IO流
		第1章 文件的编码 1-1 文件的编码 (15:07) 第2章 File 类的使用 2-1 File 类常用 API 介绍 (10:50) import java.io.File; import ja ... 
- IO流(一)__File对象和字符流FileWriter FileReader
		IO流:IO流用来处理设备之间的数据传输,Java对于流的操作对象都在IO包中将外设中的数据读取到内存中:输入将内存的数写入到外设中:输出 流分为字节流和字符流字符流的由来:其实就是字节流读取文字字节 ... 
- Java基础---Java---IO流-----对象的序列化、管道流、RandomAccessFile、数据类型的流对象DataStream、ByteArrayStream
		ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化. ObjectOutputStream 和 ObjectInputStream ... 
- 背水一战 Windows 10 (89) - 文件系统: 读写文本数据, 读写二进制数据, 读写流数据
		[源码下载] 背水一战 Windows 10 (89) - 文件系统: 读写文本数据, 读写二进制数据, 读写流数据 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 读写文本数 ... 
- Java 创建文件夹和文件,字符串写入文件,读取文件
		两个函数如下: TextToFile(..)函数:将字符串写入给定文本文件: createDir(..)函数:创建一个文件夹,有判别是否存在的功能. public void TextToFile(fi ... 
- Android创建文件夹及文件并写入数据
		package elwin.fei.mobileaudio; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ... 
- 代码实现将键盘录入的数据拷贝到当前项目下的text.txt文件中,键盘录入数据当遇到quit时就退出
		package com.looaderman.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; ... 
随机推荐
- py09函数简介
			函数的返回值 # def func():# return 'asfjsfda'# res = func()# print(res) # 函数内要想返回给调用者值 必须用关键字return"& ... 
- error: the option `Z` is only accepted on the nightly compiler
			问题记录 $ cargo expand Checking helo v0.1.0 (/Users/Buzz/Documents/git/rust-lang/hello) error: the opti ... 
- 《Django 3 Web应用开发从零开始学(视频教学版)》源码课件教学视频免费下载
			#好书推荐##好书奇遇季#<Django 3 Web应用开发从零开始学(视频教学版)>,配书资源文后提供了下载二维码.京东当当天猫都有发售. https://item.jd.com/133 ... 
- SQL1224 is returned during the execution of an SQL procedure
			SQL1224 is returned during the execution of an SQL procedure https://www.ibm.com/support/pages/sql12 ... 
- java & spring 注解 备忘
			java deprecated 注解 1 /** 2 * General service for all common business logic. 3 * 4 * @author wanghaip ... 
- 03 Spark RDD编程基础
			1. 准备文本文件从文件创建RDD lines=sc.textFile()筛选出含某个单词的行 lines.filter() 2. 生成单词的列表从列表创建RDD words=sc.paralleli ... 
- 处理code中代码格式化与eslint冲突
			在结尾去掉分号 让字符串格式化之后用单引号表示 去掉格式化后自动给末尾加的逗号 在根目录下新建一个文件prettierrc 输入如下 函数名与()之间取消空格 打开eslintrc.js 输入如下代码 ... 
- vim ctrl+s 不能再操作
			vim下编写代码不自觉按到Ctrl+S,此时vim就不能再操作了.发现vim下Ctrl+S是阻止之后的输入,可通过Ctrl+Q来解除. 
- Http方式发送Soap报文调用WebService
			WebService的实现方式之一就是基于HTTP发送SOAP报文进行调用. 可能由于各种原因,我们不能使用CXF.AXIS等框架调用,此时的解决方案之一就是直接基于HTTP发送SOAP报文,然后将响 ... 
- jquery 页面追加换行等等操作备份
			var str= "a<br/>b<br/>c<br/>"; var Newstr = str.replace("<br/> ... 
