第十二章 java流与文件操作 第三讲
三 字节流的应用 InputStream OutputStream
1. 字节流和字符流的区别:
(1)字节流可以操作任何数据,字符流只能操作字符类型的数据(文本信息)
(2)字符流使用的是字符数组,字节流使用的是字节数组
2 . OutputStream 输出流的的应用
FileOutputStream fos = new FileOutoutStream(“dome.txt”);//输出流的创建
int n=12;
byte[] arr = new byte[65,66,67,68];
fis.write(12);//向指定的位置写入
fis.write(arr);
fis.write(arr,1,2); // 1代表从指定的位置读取 2代表读取的长度
3.InputStream 输入流的应用
FileInputStream fis = new FileInputStream(“rea/data.txt”); //从指定的位置读取
//可以读取一个字节
int n = fis.read();
System.out.printn(n);
//可以读取多个字节
byte[] arr = new byte[10];
int len = fis.read(arr);
for(int n=0;n<len;n++){
System.out.println(arr[i]);
}
fis.colse();
//对读取的多个字符进行判断
int n=0;
While((n=fis.read())!= -1){
System.out.printn(n);
n = fis.read();
}
补充:(1)在InputStream中有一个方法:available () 作用是判断有多少个字节可读
可用文件字节输入流的对象调用并返回 System.out.println(fis.available());
(2)在用数组时,如果写这个函数,可以往数组中输入无线的数据。
例:byte arr = new byte[fis.available()];
4.根据字节流可以操作图片处理的原因,可以将图片复制,以下是实例的部分代码:
//复制操作---从源文件中读取,写入到目标文件中
FileInputStream fis = null;
FileOutputStream fos = null;
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
////实例对象
fis = new FileInputStream("res/34.jpg");
bis = new BufferedInputStream(fis);
fos = new FileOutputStream("res/35.jpg");
bos = new BufferedOutputStream(fos);
//读取
int n=0;
while((n=bis.read())!=-1){
bos.write(n);
}
总结:图片的复制其实也是字符或字节的复制,原理是一样的。
5.从键盘上输入数据并保存到文件中-----System.in 它是IntputStream的对象
System.in对应的流是字节读取流,所以在接收后要进行流的转换
// 从键盘输入,并使用缓存
InputStreamReader isr = new InputStreamReader(System.in);
// 注:InputStreamReader----是转换流,参数是对象
BufferedReader br = new BufferedRerder(isr);
// 放到指定的文件中
FileWrite fw = new FileWrite(“dome.txt”);
BufferWriter bw = new BufferWriter(fw);
// 对输入的数据和添加到文件中的数据进行连接
int n;
n = br.read(n);
n = bw.write(br);
从键盘输入并输出
int n = System.in.read();
System.out.println((char)n);
6. 转换流的使用
//把字符数据写入到磁盘文件中
FileOutputStream fop = new FileOutputStream("res/dome2.txt");
//把字节流转换为字符流,转换流为:OutputStream
OutputStreamWriter osw = new OutputStreamWriter(fop);
//前两个等价于:FileWriter fw = new FileWriter();
//向指定文件中写入数据
osw.write("hello");
osw.write("中国");
osw.flush();
osw.close();
//把数据从指定的磁盘文件中输出
FileInputStream fis = new FileInputStream("res/dome2.txt");
InputStreamReader isr = new InputStreamReader(fis);
char cb[] = new char[10];
int len=isr.read(cb);
System.out.println(new String(cb,0,len));
补充:FileOutputStream fop = new FileOutputStream("res/dome2.txt"); OutputStreamWriter osw =
new OutputStreamWriter(fop);
以上两行代码等价于:
new FileWriter fw = new FileWriter(“res/dome2.txt”);
不同的是因为上者可以改变编码方式,改变编码的实例为:
OutputStreamWriter osw = new OutputStreamWriter(fop,’UTF-8’);
注:系统默认的字符编码为:JBK,只有当输入的和输出的字符编码不一样的时候,才不会出现乱码,如果不用则会出现乱码。
分享到:
相关推荐
3. **缓冲流**:为了提高效率,Java提供了BufferedInputStream、BufferedOutputStream、BufferedReader和BufferedWriter,它们可以在读写操作之间存储数据,减少实际的物理读写次数。 4. **转换流**:...
根据提供的信息,我们可以总结出以下关于《Java语言程序设计基础第十版》第十二章的一些关键知识点及解答: ### 一、异常处理基本概念 #### 12.1 **问题:** 异常处理的主要思想是什么? **解答:** 异常处理的主要...
### Java第三十五至三十六讲知识点总结:输入输出流 #### 一、输入输出流概述 在Java中,输入输出流是进行数据读写的重要工具。主要包括以下几类: 1. **字节流**:主要涉及`InputStream`(输入字节流)和`...
Java文件操作是编程中常见的任务,...以上只是Java文件操作的一部分知识点,实际开发中还会涉及文件权限控制、并发访问、流操作等更多内容。了解并熟练掌握这些知识点,能帮助开发者高效、安全地处理各种文件操作需求。
第10章 static修饰符.pptx ...第3章 数组.pptx 第4章 类和对象(1).pptx 第4章 类和对象(2).pptx 第5章 类的继承.pptx 第6章 抽象类和接口.pptx 第7章 多态.pptx 第8章 包装器类.pptx 第9章 内部类.pptx
第3章 安全 第4章 网络移动性 第5章 Java虚拟机 第6章 Java class文件 第7章 类型的生命周期 第8章 连接模型 第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12章 整数运算 第13章 逻辑运算 第14章 浮点...
《Java开发实战经典》是许多Java初学者的重要学习资料,其第十二章涵盖了诸多关键知识点。这章可能涉及了面向对象编程的深入理解、异常处理、集合框架的使用、多线程、网络编程或者IO流等内容。课后习题通常用于巩固...
在北大青鸟S1JAVA课程的第十二章中,学员们会接触到一系列深入的Java编程概念和实践。这一章节的课后练习旨在巩固所学知识,提升编程技能。以下是本章涉及的一些关键知识点: 1. **面向对象编程基础**:在Java中,...
在“Java语言程序与数据结构梁勇第十版第七章复习题答案”中,我们主要探讨的是Java编程语言的基础知识,特别是与数据结构相关的概念。Java作为一种面向对象的编程语言,对于初学者来说,理解其基本语法、类和对象、...
在Java编程中,输入输出流(Input/Output Stream)是数据传输的核心机制,用于处理程序与外部世界的交互,包括键盘、显示器、文件和网络等。本章主要关注的是输入输出流、文件操作以及数据库操作。 12.1 输入输出流...
12. **第十二章:Java Swing图形界面编程** - Swing组件库:JFrame、JButton、JLabel、JTextArea等 - 布局管理器:FlowLayout、BorderLayout、GridLayout、BoxLayout - AWT与Swing的区别 - Event监听机制 这些...
第3章 数据库操作技术 第4章 SQL语句应用技术 第5章 复杂查询技术 第6章 数据库高级应用 第3篇 图表统计篇 第7章 JFreeChart绘图基础 第8章 基础图表技术 第9章 扩展图表技术 第10章 基于Cewolf组件的图表编程 第4篇...
在Java中,处理CSV文件通常需要借助第三方库,如本示例中的`javacsv.jar`。`javacsv`是由Dave Taylor创建的一个小型库,专门用于读写CSV文件。下面我们将详细探讨如何使用Java和`javacsv`库对CSV文件进行读写操作。 ...
第3章 安全 第4章 网络移动性 第5章 Java虚拟机 第6章 Java class文件 第7章 类型的生命周期 第8章 连接模型 第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12章 整数运算 第13章 逻辑运算 第14章 浮点...
第二种方法是利用Java.NIO类库,特别是`FileChannel`的`transferTo`或`transferFrom`方法。这种方法可以更有效地利用现代操作系统的底层机制,例如零拷贝(zero-copy),减少数据在用户空间和内核空间之间的复制,...
### Java反编译工具:将.class文件转换为.java文件 #### 概述 在软件开发领域,有时我们可能需要分析第三方库或者开源项目的内部结构,这时就需要借助于反编译工具来帮助我们阅读和理解其源码。Java作为一种广泛...
第17章的内容可能涉及了高级数据结构和算法,这对于进一步提升编程能力至关重要。在这个章节的课后习题中,学生通常会被要求实现各种数据结构的实例,比如队列、栈、树、图等,以及应用这些数据结构解决实际问题的...
第一章 Java语言概述.ppt 第二章 Java 编程基础.ppt 第三章 Java 核心 API的...第十二章 输入输出处理——文件操作.ppt 第十三章 输入输出处理——网络编程.ppt 第十四章 多线程.ppt 第十五章 异常(Exception)处理.ppt
5. **IO/NIO**:Java的输入输出流和非阻塞I/O(New IO或NIO)提供了丰富的文件操作和数据传输功能。学生可能需要了解`BufferedReader`, `FileWriter`, `FileInputStream`, `FileOutputStream`等基本流,以及`...