一、 实验目的和要求

实验目的和要求:要求学生能在学习和理解课堂学习内容中JAVA流编程理论的基础上,学习并逐步掌握JAVA流程序的编写和调试,学习依据处理需求对不同流的正确选择使用和组合用法。

实验内容:设计和编写一个程序从键盘读入一行字符串,将其写入一个文本文件里,再编写还有一个程序从文本文件里读入字符串并在命令行窗体显示出来。

二、实验代码

写入文件

package think;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream.GetField; public class java_exp_03iostream { public static void main(String[] args) { //字符缓冲流
BufferedReader br = null;
BufferedWriter bw = null;
try {
//br=newBufferedReader(newFileReader("d:\\buffered.txt"));
//从键盘读取字节流 转化成字符流 包装成缓冲字符流
br= new BufferedReader(new InputStreamReader(System.in));
bw = new BufferedWriter(new FileWriter("d:\\buffered.txt"));
for(String str; (str= br.readLine() )!= null ; )
{
if(str.equalsIgnoreCase("e")||str.equalsIgnoreCase("exit"))
{ System.out.println("退出");break;}
else
{
bw.write(str);
bw.newLine(); //行分隔符
}
} } catch (IOException e) {
e.printStackTrace();
// TODO: handle exception
}finally //关闭两个buffered对象
{
try {
if(br != null)
br.close();
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
try {
if(bw != null)
bw.close();
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
} } } }<span style="font-weight: bold;"> </span>

控制台输入字符串,输入e退出,把字符串写入文件。

第二个程序读出文件内容。

<span style="font-size:12px;"><strong>p</strong>ackage think;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException; public class java_exp_03read {
public static void main(String[] args) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("d:buffered.txt"));
for(String str; (str= br.readLine() )!= null ; )
{ System.out.println(str);
} } catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}finally{
try {
if(br != null)
br.close();
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
} }
} }</span>

三、实验总结

IO流学习小结:

 
*FileInputStream

 *FileOutputStream 字节 文件输入输出流

 *FileReader

 *FileReader 字符 文件输入输出流

 *Buffered+* 缓冲流类 属于过滤流  包装 文件流   经常使用

 *InputStreamReader 

 *OutputStreamReader 转换流

 *DataInputStream 

 *DataOutputStream 数据流

 *PrintStream

 *PrintWriter 打印流

 *ObjectOutputStream

 *ObjectInputStream 对象流





总体的思路:





 *文件的输入输出有非常多种方法能够实现,差别在于效率,字符的编码不同,採用的方式可能也不同。





遇到的问题和解决办法:





 *问题: 最先採用的方法是FileInputStream,FileOutputStream。假设写入的是英文或者数字,没问题。假设是中文,则从文件输入的时候,有问题。输出到文件没问题。

百度+思考了一会儿,结果例如以下:unicode编码时,中文是两个字节编码的。用字节流的方式从文件读进来的时候,遇到中文的字符,把中文拆成两个字节读取,所以会乱码。

而字节流输出到文件的时候,会依据平台的默认编码方式把中文字符转换成了字节数组,一个字节一个字节的输出文件。windows记事本能够自己主动认出中文字符。所以,文本内容须要读取的时候,一般不用字节流。

* 优化:在用了字符流输入输出之后。又用了缓冲流。来提高效率。

先把读取或者写入到文件的内容,先保存在缓冲数组里,一次性写入或者输出,提高了效率。

在我写的程序能够非常好的体现出来:比方。我在从console写字符到文件的时候。输入 e  或者 exit结束。再没有输入e 和exit的时候,打开buffered的时候。会发现是没有内容的。

结束之后,才显示内容。

 * 心得:C。C++文件的输入输出都学过,可是因为平时非常少写小软件,所以没用到这个。

可是输入输出非常重要。



NJUPT JAVA语言 流处理程序设计的更多相关文章

  1. 已看1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。[泛型]\

    1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架.多线程(并发编程).I/O(NIO).Socket.JDBC.XML.反射等.[泛型]\1* ...

  2. java语言实现对程序设计语言源文件统计字符数、单词数、行数及其他拓展功。

    本次作业Github项目地址:https://github.com/YiChenglong2018/WordCount 一.项目简介 本项目的需求可以概括为:对程序设计语言源文件统计字符数.单词数.行 ...

  3. 0031 Java学习笔记-梁勇著《Java语言程序设计-基础篇 第十版》英语单词

    第01章 计算机.程序和Java概述 CPU(Central Processing Unit) * 中央处理器 Control Unit * 控制单元 arithmetic/logic unit /ə ...

  4. Java语言程序设计(基础篇)第一章

    第一章 计算机.程序和Java概述 1.1 引言 什么是程序设计呢? 程序设计就是创建(或者开发)软件,软件也称为程序. 1.2 什么是计算机 计算机是存储和处理数据的电子设备,计算机包括硬件(har ...

  5. 《JAVA语言程序设计》上课笔记

    教学目标:1.使学生了解JAVA课程的性质.定位.作用:为什么要学习JAVA?让学生知道如何学好JAVA: 教学内容: 一.        问几个问题 1.             你们到这里来干什么 ...

  6. Java语言程序设计-助教篇

    1. 给第一次上课(软件工程)的老师与助教 现代软件工程讲义 0 课程概述 给学生:看里面的第0个作业要求 2. 助教心得 美国视界(1):第一流的本科课堂该是什么样?(看里面的助教部分) 助教工作看 ...

  7. Java语言程序设计复习提纲

     这是我在准备Java考试时整理的提纲,如果是通过搜索引擎搜索到这篇博客的师弟师妹,建议还是先参照PPT和课本,这个大纲也不是很准确,自己总结会更有收获,多去理解含义,不要死记硬背,否则遇到概念辨析题 ...

  8. java语言程序设计(一)-1

    java 语言的特点是: 强类型,制定了比较多的语言规范,尽可能在编译阶段检测出更多的错误及警告. 编译和解释,首先将源代码编译成codebyte,运行时,java的运行系统装载和链接需要执行的类,并 ...

  9. 全国计算机等级考试二级笔试样卷Java语言程序设计

    一.选择题((1)-(35)每小题2分,共70分) 下列各题A).B).C).D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分. (1)下列选项中不符合良好程 ...

随机推荐

  1. BZOJ 2001 线段树+LCT (TLE)

    同是O(nlog^2n)怎么常数差距就这么大呢,,, 同是LCT  怎么我的和Po姐姐的常数差距就这么大呢 我绝对是脑子被驴踢了才写这个垃圾算法 //By SiriusRen #include < ...

  2. ACM_汉诺塔问题(递推dp)

    Problem Description: 最近小G迷上了汉诺塔,他发现n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列.由于发生错移产生的系列就增加了,这种错误是放错了 ...

  3. action="post" 、 servletconfig 、 servletcontext 、getPrintWiter() 、context-param、 init-param(第一个完整的servlet)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  4. Coursera公开课-Machine_learing:编程作业3

    第四周 编程作业: Multi-class Classification and Neural Networks 这周作业与上一周有许多相同的部分,比如longistic regression中的lr ...

  5. [Android]异常5-throwable:java.lang.OutOfMemoryError: pthread_create

    背景:线程初始化耗时任务 异常原因: 可能一>多个new Thread()嵌套 解决办法有: 解决一>使用Handler分离new Thread()嵌套 注: 06-30 09:12:26 ...

  6. windows server2003 多用户登陆问题解决办法

    windows server2003 多用户登陆问题解决办法 Windows Server远程登陆默认情况下只允许同时有两个用户登陆,超过两个用户会提示"超出最大连接数". 要解决 ...

  7. 【译】x86程序员手册12-4.2系统指令

    4.2 Systems Instructions 系统指令 Systems instructions deal with such functions as: 系统指令具有以下功能: Verifica ...

  8. Eclipse + Pydev开发Python时import报错解决方法

    一.  原文链接:http://blog.csdn.net/lhanchao/article/details/51306626            用eclipse +PyDev开发python时, ...

  9. OpenGL第23-26小结

    到后面代码相对而言比较复杂了,因为没有系统的看红宝书(就跟字典一样,兴趣缺缺),很多操作的步骤比较迷糊. 23讲讲解了如何将环境纹理贴在球体.圆柱体等非矩形物体表面,从而达到一个反射周围景色的效果(恩 ...

  10. Python操作数据库及hashlib模块

    一.hashlib模块 hashlib模块,主要用于加密相关的操作,在python3的版本里,代替了md5和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA51 ...