NJUPT JAVA语言 流处理程序设计

一、 实验目的和要求

实验目的和要求:要求学生能在学习和理解课堂学习内容中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++文件的输入输出都学过,但是由于平时很少写小软件,所以没用到这个。但是输入输出很重要。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-01 20:36:49

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

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

. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和程序的单一进程.线程可以被称为轻量级进程.线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源. 2. 多线程编程的好处是什么? 在多线程程序中,多个线程被并发的执行以提高程序的效率,CPU不会因为某个线程需要等待资源而进入空闲状态. 3. 用户线程和守护线程有什么区别? 当我们在Java

NJUPT JAVA语言 综合图形界面程序设计

一. 实验目的和要求 学习和理解JAVA SWING中的容器,部件,布局管理器和部件事件处理方法. 通过编写和调试程序,掌握JAVA图形界面程序设计的基本方法. 实验内容: 设计和编写一个用于将人民币转换为等值的美元的程序,界面要求可以输入人民币的金额并可以得到转换后的结果. 附:程序使用的人民币外汇牌价参考 每100元美元等值买入人民币数:619.72 (2015/5/23 数据) 二.实验代码 package think; import java.awt.Color; import java

NJUPT JAVA语言 小应用程序Applet设计

一. 实验目的和要求 要求学生能在学习和理解课堂学习内容中JAVA小应用程序的基础上,通过实验,培养学生将JAVA小应用程序相关知识点(包括JAVA Applet和低级事件处理模型)有机结合,设计基于WEB浏览器的小应用程序的能力. 实验内容: 设计和编写一个可以用鼠标操作的Applet小应用程序和相应的HTML页面,观察Applet的执行过程,测试程序鼠标用户交互操作的效果. 二.实验代码 package think; import java.applet.Applet; import jav

Java语言的主要特点

Java语言的主要特点: 1. 跨平台性 所谓的跨平台性,是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行.这是软件发展的趋势和编程人员追求的目标.之所以这样说,是因为计算机硬件的种类繁多,操作系统也各不相同,不同的用户和公司有自己不同的计算机环境偏好,而软件为了能在这些不同的环境里正常运行,就需要独立于这些平台. 而在Java语言中, Java自带的虚拟机很好地实现了跨平台性. Java源程序代码经过编译后生成二进制的字节码是与平台无关的,但是可被Java虚拟机识别的一种

《Java语言程序设计》大作业报告 九宫格游戏

    <Java语言程序设计>大作业报告     中国石油大学(北京)2015 - 2016 学年第二学期     班级:_____计算机14-1_______ 姓名:_____  许 恺_________________ 学号:______2014011329___________     题意分析 程序首先需要九个可以移动的格子,大小相等,有字符串标示,其次要可以相应鼠标和键盘方向键的控制,可以自由移动,并且与此同时记录步数,最后在满足条件时弹出对话框并显示步数以及是否打破记录,关于打破

Java语言程序设计 上机实验5 异常

Java语言程序设计 上机实验5 实验目的: 理解异常的概念,掌握Java的异常处理机制.常见异常的捕获方法.自定义异常及其抛出和捕获方法. 实验内容: 常见异常的捕获: 编写一个程序,分别生成ArrayIndexOutOfBoundsException类型和NumberFormatException类型的异常:然后改写程序,对这两种类型的异常进行捕获并合理地处理. 另外,思考并回答问题:能否0同时抛出ArrayIndexOutOfBoundsException类型和NumberFormatEx

Java语言程序设计 上机实验4 掌握声明接口、一个类实现接口的声明和使用方法

Java语言程序设计 上机实验4 实验目的: 理解接口的作用,理解接口和实现接口的类的关系,掌握声明接口.一个类实现接口的声明和使用方法:熟悉Java语言包和实用包中的常用类. 实验内容:(*)为选做 声明圆柱体类Cylinder,继承椭圆类Ellipse(实现周长Perimeter接口和面积Area接口),为圆柱体类设计较为全面的构造方法,并实现体积Volume接口,计算表面积和体积. 将Java的若干关键字(15个以上)保存在一个字符串数组中,对其按升序排列,再采用顺序查找和二分法查找,判断

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

java 语言的特点是: 强类型,制定了比较多的语言规范,尽可能在编译阶段检测出更多的错误及警告. 编译和解释,首先将源代码编译成codebyte,运行时,java的运行系统装载和链接需要执行的类,并做必要的优化后,解释执行字节码程序. 自动无用内存回收功能,系统有个垃圾收集器,自动收集程序不再使用的内存. 面向对象,采用面向对象的思想方法.主要有封装,继承,多态等特点. 与平台无关,编译一次,可以跨平台运行,前提是平台上安装java解释器. 安全性,不允许使用指针,进行数组下标越界检测,内存自

java语言程序设计(一)-2

(一)jdk安装及环境变量配置 1.jdk下载 下载地址http://www.oracle.com/technetwork/java/javase/downloads/index.html,下载SE标准企业版本,当前已经更新到1.8.X版本了,但是最新版本不支持XP系统,已被验证(无法在xp系统中安装),于是选择1.7版本. 2.环境变量配置 配置path和classpath路径,我的电脑->属性->高级->环境变量,在用户变量中添加java的安装路径,在path中添加bin路径,在cl