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. -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流

      File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...

  2. 理解Java中字符流与字节流

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个"流动的方向",通常可 ...

  3. 理解Java中字符流与字节流的区别(转)

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...

  4. Java Io 字符流

    Java Io 字符流包含: 1. InputStreamReader  它是由byte流解析为char流,并且按照给定的编码解析. 2. OutputStreamWrite  它是char流到byt ...

  5. IO流(字节流,字符流,缓冲流)

    一:IO流的分类(组织架构) 根据处理数据类型的不同分为:字节流和字符流 根据数据流向不同分为:输入流和输出流   这么庞大的体系里面,常用的就那么几个,我们把它们抽取出来,如下图:   二:字符字节 ...

  6. Java IO: 字符流的Buffered和Filter

    作者: Jakob Jenkov  译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍缓冲与过滤相关的reader和writer,主要涉及BufferedReader.B ...

  7. Java IO: 字符流的Piped和CharArray

    作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍管道与字符数组相关的reader和writer,主要涉及PipedReader.Pip ...

  8. 理解Java中字符流与字节流的区别

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...

  9. Java中字符流与字节流的区别

    字符流处理的单元为2个字节的Unicode字符,分别操作字符.字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组.所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单 ...

  10. Java:文件字符流和字节流的输入和输出

    最近在学习Java,所以就总结一篇文件字节流和字符流的输入和输出. 总的来说,IO流分类如下: 输入输出方向:     输入流(从外设读取到内存)和输出流(从内存输出到外设) 数据的操作方式: 字节流 ...

随机推荐

  1. [c语言]c语言中的内存分配[转]

    在任何程序设计环境及语言中,内存管理都十分重要.在目前的计算机系统或嵌入式系统中,内存资源仍然是有限的.因此在程序设计中,有效地管理内存资源是程序员首先考虑的问题. 第1节主要介绍内存管理基本概念,重 ...

  2. RFC2544吞吐量测试详细步骤-信而泰Renix软件操作演示

    关键词:RFC1242:RFC2544:吞吐量:吞吐率. 吞吐量概述:吞吐量即吞吐率,这个词首先在RFC1242中被提出,是评估网络设备性能的首要指标,其定义是在设备没有丢帧的情况下的最大的转发速率, ...

  3. 太骚了,用Excel玩机器学习

    最近发现了一个好玩的Python库,它可以将训练好的机器学习模型转换为Java.C.JavaScript.Go.Ruby,VBA 本地代码,可以让连Python和机器学习一无所知的同学也能感受预测的神 ...

  4. 泛型种树(generic) 代码

    再这个案例中我们,为什么要使用泛型约束 使用约束的原因 约束指定类型参数的功能和预期. 声明这些约束意味着你可以使用约束类型的操作和方法调用. 如果泛型类或 方法对泛型成员使用除简单赋值之外的任何操作 ...

  5. 工程师计划1-> 项目管理1 | 项目与项目管理

    这学期报了一门课,项目管理,是一门网课,但跟之前不一样,我期待能够从这门课中学到一些东西.这是我上学期在组织毛概小组大作业时遇到困难时,意识到自己应该学习这门课. 工程师计划其实是一直以来想要把学习的 ...

  6. 如何在shell脚本里使用sftp批量传送文件(二)

    原文链接:http://bbs.chinaunix.net/archiver/tid-508290.html 主要步骤如下: 1.为运行shell脚本的本地用户生成密钥对2.将其中的公钥分发到sftp ...

  7. Tableau学习Step2一数据文件的读取与统计图、表的概述

    Tableau学习Step2一数据文件的读取与统计图.表的概述 本文首发于博客冰山一树Sankey,去博客浏览效果更好. 一. 前言 本教程通过一个案例从浅到深来学习Tableau知识 案例概述: 二 ...

  8. JVM上篇:类加载子系统

    JVM类加载 目录 JVM类加载 1.内存结构概述 2.类加载子系统概述 3.类的加载过程 2.1加载 2.2Linking 2.2.1验证(Verify) 2.2.2准备(Prepare) 2.2. ...

  9. 含变量的字符串拼接(string.Format()或$"")

    含变量的字符串拼接,一般不要用 + 来连接字符串,可用以下两种方式: 一.string.Format() 二.$""  (在C#6以上的版本中可用,推荐这种写法) 1 public ...

  10. iCloud开发: key-value Storage,CloudKit,iCloud Documents

    目录 iCloud开发 iCloud三种类型的存储方式 项目配置 1.iCloud 官网配置 2.本地Xcode配置 注意事项 一.key-value storage 1.获取默认store 2.写入 ...