java-字节流-字符流
I/O叙述
FileOutputStream类字节输出流的介绍:
写入数据的原理
java程序-->JVM(java虚拟机)--->OS(操作系统)----》OS调用写数据的方法---》把数据写入到文件钟
字节输出的使用步骤:
11创建一个FileOutputStream 对象,构造方法钟传递写入数据的目的地
22调用FileOutputStream对象中的方法write把数据写入到文件中
33释放资源,因为流使用会占用一定的内存,使用完毕要把内存情况,提高程序的效率
public class Demo1 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("C:\\Users\\quan\\Desktop\\untitled1\\src\\fs.txt");
fos.write(97);
fos.close(); }
}
一次写多个字节
public class Demo1 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("C:\\Users\\quan\\Desktop\\untitled1\\src\\bfs.txt");
fos.write(49);
fos.write(48);
fos.write(48);
//100
byte[] bytes = {65,66,57,59};
fos.write(bytes); byte[] bytes1 = {-65,-66,57,59};
fos.write(bytes1);
fos.close();//100AB9;烤9; }
}
字符数组的一部分写入文件
public class Demo1 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("C:\\Users\\quan\\Desktop\\untitled1\\src\\cfs.txt");
byte[] bytes1 = {65,66,57,59};
fos.write(bytes1,1,2);
fos.close();
//B9
}
}
写入字符串,利用字符串方法转换为字节
public class Demo1 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("C:\\Users\\quan\\Desktop\\untitled1\\src\\cfs.txt");
byte[] bytes = "halo".getBytes();
fos.write(bytes);
fos.close();
//文件:halo
}
}
数据追加写入
public class Demo1 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("C:\\Users\\quan\\Desktop\\untitled1\\src\\cfs.txt",true);
byte[] bytes = "halo".getBytes();
fos.write(bytes);
fos.close();
//文件:halohalo
}
}
换行
public class Demo1 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("C:\\Users\\quan\\Desktop\\untitled1\\src\\cfs.txt",true);
byte[] bytes = "halo".getBytes();
for (int i =1;i<=10;i++){
fos.write(bytes);
fos.write("\r\n".getBytes());
} fos.close();
//文件:halohalo
}
}
/*
halohalohalo
halo
halo
halo
halo
halo
halo
halo
halo
halo */
FileInputStream类字节输入流的介绍:
public class Demo1 {
public static void main(String[] args) throws IOException {
FileInputStream fos = new FileInputStream("C:\\Users\\quan\\Desktop\\untitled1\\src\\cfs.txt");
int i = fos.read();
System.out.println(i); int i2 = fos.read();
System.out.println(i2);
fos.close();
}
}
/*
104
97
*/
循环文件
public class Demo1 {
public static void main(String[] args) throws IOException {
FileInputStream fos = new FileInputStream("C:\\Users\\quan\\Desktop\\untitled1\\src\\cfs.txt");
//循环读取:
int len =0;
//因为读到没有数据的时候,自动返回-1
while ((len = fos.read())!= -1){
System.out.print(len);
System.out.println((char)len);
}
}
}
/*
104h
97a
108l
111o
13
10 104h
97a
108l
111o
13
10
*/
读取文件的原理
字节输入流一次多字节
方法参数byte[]作用就是存储每次读取到的多个字节
数组的长度一班定义为1024或者他的整数倍
方法的返回参数int是 每次读取到的所有有效字节个数
public class Demo1 {
public static void main(String[] args) throws IOException {
FileInputStream fos = new FileInputStream("C:\\Users\\quan\\Desktop\\untitled1\\src\\cfs.txt");
byte[] bytes = new byte[3];
int len = fos.read(bytes);
System.out.println(len);
System.out.println(Arrays.toString(bytes));
System.out.println(bytes);
System.out.println(new String(bytes));//直接转为字符串
fos.close();
}
}
/*
3
[104, 97, 108]
[B@1b6d3586
hal
Arrays.toString()的作用是用来很方便地输出数组,
而不用一个一个地输出数组中的元素。 */
字符流
当使用字节流读取文本的时候,可能会有一个小问题,就是遇到中文字符时,可能不会显示完整的字符。
是因为一个中午字符可能占用多个字节存储,所以提供了一些字符流类,以字符为单位读写数据,专门处理文本文件
/*
使用字节流读取中文文件
1个中文
GBK:占用两个字符
UTF-8占用3个字符
*/ import java.io.FileInputStream;
import java.io.IOException; public class Demo11 {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("C:\\Users\\quan\\Desktop\\练习\\src\\code\\haotusay");
int len = 0;
while ((len = fis.read()) != -1){
System.out.println(len);
}
fis.close();
}
}
/*
字符输入流的使用步骤:
创建FileReader 对象,构造方法钟绑定要读取的数据源
使用FileReader对象钟的方法read读取文件夹
释放资源
*/
public class Demo11 {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("C:\\Users\\quan\\Desktop\\练习\\src\\code\\haotusay");
// int len = 0;
// while ((len = fr.read()) != -1){
// System.out.print((char)len);
// }//结果:全植强45
char[] cs = new char[1024];//存储读取到的多个字符
int len = 0;
while ((len = fr.read(cs)) != -1){
System.out.println(len);
System.out.println(new String(cs,0,len));//因为到尾部的时候的值就为-1
} fr.close();
}
}
字符输出流
/*
字符输出流的使用步骤
创建FileWriter 对象,构造方法钟绑定要写入数据的目的地
使用Filewriter方法writer,把数据写入到内存缓冲区钟(字符转换为字节的过程)
使用FIlewriter方法flush,把内存缓冲区钟的数据,刷新到文件中
释放资源-会先把内存缓冲区中的数据刷新到文件中
*/
写入单个字符
public class Demo11 {
public static void main(String[] args) throws IOException {
FileWriter fr = new FileWriter("C:\\Users\\quan\\Desktop\\练习\\src\\code\\haotusay");
fr.write(98);//直接替换文件内容
fr.flush();//同一次的写入追加写入
fr.close(); } }
/*
flush:刷新缓冲区,流对象可以继续使用
close:先刷新缓冲区,然后通知系统释放资源。流对象不可以在被使用
*/
写入的其他方法
public class Demo11 {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("C:\\Users\\quan\\Desktop\\练习\\src\\code\\haotusay");
char[] cs = {'a','v','c','d'};
fw.write(cs);
fw.write(cs,1,3);
fw.write(" quanzhiqiang ");
fw.write("货拉拉拉拉",1,3);
fw.close();
//avcdvcd quanzhiqiang 拉拉拉
}
}
续写和换行
public class Demo11 {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("C:\\Users\\quan\\Desktop\\练习\\src\\code\\haotusay",true);
// for (int i = 0;i<10 ;i++){
// fw.write("qq" + i);
// }//QQqq0qq1qq2qq3qq4qq5qq6qq7qq8qq9 for (int i = 0;i<10 ;i++){
fw.write("qq" + i+"\n");
}
/*
QQqq0qq1qq2qq3qq4qq5qq6qq7qq8qq9qq0
qq1
qq2
qq3
qq4
qq5
qq6
qq7
qq8
qq9
*/
fw.close();
}
}
java-字节流-字符流的更多相关文章
- -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流
File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...
- 理解Java中字符流与字节流
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个"流动的方向",通常可 ...
- 理解Java中字符流与字节流的区别(转)
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...
- Java Io 字符流
Java Io 字符流包含: 1. InputStreamReader 它是由byte流解析为char流,并且按照给定的编码解析. 2. OutputStreamWrite 它是char流到byt ...
- IO流(字节流,字符流,缓冲流)
一:IO流的分类(组织架构) 根据处理数据类型的不同分为:字节流和字符流 根据数据流向不同分为:输入流和输出流 这么庞大的体系里面,常用的就那么几个,我们把它们抽取出来,如下图: 二:字符字节 ...
- Java IO: 字符流的Buffered和Filter
作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍缓冲与过滤相关的reader和writer,主要涉及BufferedReader.B ...
- Java IO: 字符流的Piped和CharArray
作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍管道与字符数组相关的reader和writer,主要涉及PipedReader.Pip ...
- 理解Java中字符流与字节流的区别
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...
- Java中字符流与字节流的区别
字符流处理的单元为2个字节的Unicode字符,分别操作字符.字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组.所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单 ...
- Java:文件字符流和字节流的输入和输出
最近在学习Java,所以就总结一篇文件字节流和字符流的输入和输出. 总的来说,IO流分类如下: 输入输出方向: 输入流(从外设读取到内存)和输出流(从内存输出到外设) 数据的操作方式: 字节流 ...
随机推荐
- 【C# TAP 异步编程】四、SynchronizationContext 同步上下文|ExecutionContext
一.同步上下文(SynchronizationContext)概述 由来 多线程程序在.net框架出现之前就已经存在了.这些程序通常需要一个线程将一个工作单元传递给另一个线程.Windows程序以消息 ...
- Scrapy:用cmdline运行爬虫后导致主程序也结束——CrawlerProcesser
学习自: Scrapy官方文档--CrawlerRunner相关 解决django或者其他线程中调用scrapy报ReactorNotRestartable的错误 - liuxianglong - 博 ...
- redis数据类型的使用及介绍
Redis数据类型 1.Sting类型 set命令 设置键值,存在则覆盖,不存在则新建 set key value EX 秒 设置有效时长为秒 nx 如果键不存在则新建,如果存在返回nil xx 只有 ...
- 【spring源码系列】之【Bean的销毁】
以"冬奥之光,多彩冰灯"为主题的第四十一届全国专业冰雕比赛在冰城哈尔滨市进入第二天,60名冰雕高手在哈尔滨冰灯艺术游园会园区展开激烈的竞技比拼. 冰雕艺术 1. 概述 Bean的销 ...
- php将一个字符串转变成键值对数组的效率问题
有这样一种需求,将形式为"TranAbbr=IPER|AcqSsn=000000073601|MercDtTm=20090615144037"的字符串转换成如下格式的数组: Arr ...
- SpringBoot学习入门之Hello项目的构建、单元测试和热部署等(配图文,配置信息详解,附案例源码)
前言: 本文章主要是个人在学习SpringBoot框架时做的一些准备,参考老师讲解进行完善对SpringBoot构建简单项目的学习汇集成本篇文章,作为自己对SpringBoot框架的总结与笔记. 你将 ...
- C#处理医学影像(三):基于漫水边界自动选取病灶范围的实现思路
开发背景: 医生在实际使用PACS软件观察病灶时,经常会测量不规则病灶的周长和面积,使用画笔工具勾勒比较耗时且准度欠佳, 或者在标记人工智能训练样本时少则几百张,多则几千张,为极大减少耗时和极大提高工 ...
- C++ 接口的实现方式
一.接口的定义 有时候,我们得提供一些接口给别人使用.接口的作用,就是提供一个与其他系统交互的方法.其他系统无需了解你内部细节,并且也无法了解内部细节,只能通过你提供 给外部的接口来与你进行通信.根据 ...
- 今天我自己第一次写了一个Windows批处理bat脚本,一起学习一下吧。
今天我自己第一次写了一个Windows批处理bat脚本,备注一下 事情原由:自己使用Java开发了一个加解密的工具.但是当把工具给别人使用的时候,别人还需要把代码编译打包, 然后还需要看一下代码里面的 ...
- Java8 中的流式数据处理
java8的流式处理极大了简化我们对于集合.数组等结构的操作,让我们可以以函数式的思想去操作,本篇文章将探讨java8的流式数据处理的基本使用. 一. 流式处理简介 在我接触到java8流式处理的时候 ...