代码编织梦想

  1. 实验目的

1. 理解I/O流的概念,掌握其分类

2. 掌握文本文件读写、二进制文件读写

  1. 实验内容

1. 分别使用FileWriter 和 BufferedWriter 往文件中写入1万个随机数,比较用时的多少?(用时采用方法System.currentTimeMillis())求时间差;

使用:FileWriter

package project9;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
public class FWrite {

	public static void main(String[] args) throws IOException{

		double t1=System.currentTimeMillis();
		FileWriter f=new FileWriter("f1.txt");
        Random r=new Random();
		for(int i=0;i<10000;i++) {
			f.write(r.nextInt(100)+" ");//随机写入10000个0——100的数
		}
		f.close();
		double t2=System.currentTimeMillis();
		System.out.println("时间差为:"+(t2-t1)+"ms");
	}

}

使用:BufferedWriter

package project9;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;

public class BWrite {

	public static void main(String[] args) throws IOException{

		double t1=System.currentTimeMillis();
		FileWriter f=new FileWriter("f2.txt");
		BufferedWriter b=new BufferedWriter(f);
		Random r=new Random();
		for(int i=0;i<10000;i++) {
			b.write(r.nextInt(100)+" ");
		}
		b.close();
		double t2=System.currentTimeMillis();
		System.out.println("时间差为:"+(t2-t1)+"ms");
	}

}

2.课本P547,19.2 :编写一个文件,如果文件Exercise 19_2.dat 不存在,就创建一个名为Exercise 19_2.txt的文件。向这个文件追加新数据。使用二进制I/O将100个随机生成的整数写入这个文件中。

package project9;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;

public class Exercise {

	public static void main(String[] args) throws IOException{
		File f=new File("Exercise 19_2.dat");
		if(!f.exists()) {
			 f=new File("Exercise 19_2.txt");
		}
		PrintWriter p=new PrintWriter(f);
		Random r=new Random();
		for(int i=0;i<100;i++) {
			p.print(r.nextInt(10000)+"   ");
		}
		p.close();

	}

}

3.(对二进制数据文件中的所有数据求和)假设已经使用DataOutputStream中的writeInt(int)创建一个名为Exercise 19_3.dat的二进制数据文件,文件包含数目不确定的整数,编写一个程序来计算这些整数的总和。

package project9;
import java.util.*;
import java.io.*;
public class Sum {

	public static void main(String[] args) throws IOException{
		DataOutputStream output=new DataOutputStream(new FileOutputStream("Exercise 19_3.dat"));
		DataInputStream input=new DataInputStream(new FileInputStream("Exercise 19_3.dat"));
		Random r=new Random();
		int s=0;
		int n=r.nextInt(50)+10;
		System.out.println("文件包含"+n+"个整数");
		for(int i=0;i<n;i++) {
			int m=r.nextInt(100);
			output.writeInt(m);
			System.out.print(input.readInt()+" ");//读出文件的内容并输出
			s+=m;
		}
		output.close();
		input.close();
		System.out.println();
		System.out.println("它们的和为:"+s);

	}

}



4.在文本文件bigbook.txt中包含有很长篇幅的英语短文,编写程序要求统计文件的所有短文中包含英文字母“A”的个数,并显示统计的时间。

package project9;

import java.io.File;
import java.util.Scanner;

public class Bigbook {

	public static void main(String[] args) throws Exception {
		double t1=System.currentTimeMillis();
		int n=0;
        File file = new File("bigbook.txt");
		Scanner input=new Scanner(file);
		while(input.hasNext()) {//一定要另存为文件,把编码格式改为ANSI!否则返回值是假
			String s;
			s=input.nextLine();
			System.out.println(s);//输出读取的内容
			n+=sort(s);
		}
		input.close();
		double t2=System.currentTimeMillis();
		System.out.println("有"+n+"个A");
		System.out.println("用时为:"+(t2-t1)+"ms");
	}
	
	public static int sort(String s) {
		char a='A';
		int n=0;
		for(int i=0;i<s.length();i++)
			if(a==s.charAt(i)) 
				n++;
		return n;
	}

}

5.编写一个Java应用程序,给当前的类所在的文件ReadExample.java添加行号拷贝到另一个文件temp.text

package project9;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
public class ReadExample {

	public static void main(String[] args) throws Exception {
		String s;
		BufferedReader r=new BufferedReader(new FileReader("src\\project9\\ReadExample.java"));
		BufferedWriter w=new BufferedWriter(new FileWriter("temp.text"));
		for (int i = 1;(s=r.readLine())!= null ; i++) {
			w.write(i+":"+s+"\n");
		}
		r.close();
		w.close();
	}

}

 (将对象和数组存储在文件中)编写一个程序,向一个名为Exercise19_5.dat的文件中存储一个含5个int值1,2,3,4,5的数组,存储一个表示当前时间的Date对象,存储一个double值5.5

package project9;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Date;

public class ObjectStream {

	public static void main(String[] args) throws IOException, ClassNotFoundException{//用readObject必须抛出ClassNotFoundException
		int[] a= {1,2,3,4,5};
		double b=5.5;
		//写
		@SuppressWarnings("resource")
		ObjectOutputStream output=new ObjectOutputStream(new FileOutputStream("Exercise19_5.dat"));
		output.writeDouble(b);//要先写非对象类型的,否则会报错
		output.writeObject(a);
		output.writeObject(new Date());

		//读
		@SuppressWarnings("resource")
		ObjectInputStream input=new ObjectInputStream(new FileInputStream("Exercise19_5.dat"));
		double e=input.readDouble();
		int[] c=(int[])(input.readObject());
		Date d=(Date)(input.readObject());
		
		System.out.println("数组为:");
		for(int i=0;i<c.length;i++) {
			System.out.print(c[i]+"   ");
		}
		System.out.println();
		System.out.println("当前时间:"+d);
		System.out.println("double值:"+e);
		
		output.close();
		input.close();

	}

}

(组合文件)编写一个工具程序,使它能够用下面的命令,将文件组合在一起构成一个新文件:

java Exercise19_12 SourceFile1…SourceFilen TargetFile

这个命令将 SourceFile1,…,SourceFilen合并为TargetFile。

package project9;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
public class Merge {

	public static void main(String[] args) throws IOException {
		Scanner input=new Scanner(System.in);
		System.out.println("你想合并几个文件?");
		int n=input.nextInt();
		File[] SourceFile=new File[n];
		for(int i=0;i<n;i++) {
			SourceFile[i]=new File("SourceFile"+(i+1)+".txt");
			PrintWriter p=new PrintWriter(SourceFile[i]);
			Random r=new Random();
			for(int j=0;j<10;j++) {
				p.print(r.nextInt(100)+"   ");//随机生成10个数写入每个文件
			}
			p.close();
		}
		BufferedWriter w=new BufferedWriter(new FileWriter("TargetFile.txt"));
		for(int i=0;i<n;i++) {
			BufferedReader r=new BufferedReader(new FileReader(SourceFile[i]));
			w.write(r.readLine()+"\n");
			r.close();
		}
		w.close();

	}

}

设计一个复数类Complex,并在该类中实现将对象自身保存到文件的功能,实例方法void save(String fileName);从文件恢复数据的静态方法static Complex load(String fileName)

package project9;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Complex {

	private double real;
	private String vir;
	@SuppressWarnings("static-access")
	public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
		Complex c1=new Complex(4,"+5i");
		c1.save("complex.txt");
		System.out.println((c1.load("complex.txt")).getComplex());

	}

	public Complex() {
	}
	public Complex(double real,String vir) {
		this.real=real;
		this.vir=vir;
	}
	
	public String getComplex() {
		return real+vir;
	}
	void save(String filename) throws IOException {
		DataOutputStream output=new DataOutputStream(new FileOutputStream(filename));
		//ObjectOutputStream output=new ObjectOutputStream(new FileOutputStream(filename));
		output.writeDouble(real);
		output.writeUTF(vir);
	}
	static Complex load(String fileName) throws ClassNotFoundException, IOException {
		DataInputStream input=new DataInputStream(new FileInputStream(fileName));
		//ObjectInputStream input=new ObjectInputStream(new FileInputStream(fileName));
		//System.out.println(input.readDouble());
		double n=input.readDouble();
		String s=input.readUTF();
		Complex c=new Complex(n,s);
		return c;
	}
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_51246603/article/details/127157913

java 输入输出流-爱代码爱编程

主要有四个主抽象类:                         字节流                                            字符流 输入流:InputStream                                         Reader 输出流: OutputStream          

java实验——流与文件_学无止境 ’小五的博客-爱代码爱编程

(一)使用标准数据流的应用程序  标准数据流指在字符方式下(如DOS 提示符)程序与系统进行输入输出的方式,键盘和显示器屏幕是标准输入输出设备,数据输入的起点为键盘,数据输出的终点是屏幕,输出的数据可以在屏幕上显示出来。 1. 程序功能:将键盘上输入的字符在屏幕上显示出来 2. 编写KY10_1.java 程序文件,源代码如下。 class KY10_

java第十章——输入、输出流_浅端的博客-爱代码爱编程

程序在运行的时候可能需要从外面读入数据,这个时候java.io包提供了大量的流类,所有的输入流都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类。而所有的输入流都是OutputStream

Java课程实验报告实验六——异常处理-爱代码爱编程

一、实验目的 1.编写try-catch块处理异常 二、实验内容1. 【NumberFormatException异常】编写一个程序,提示用户输入两个整数,然后显示它们的和。用户输入错误时提示用户重新输入。 2. 【ArrayIndexOutOfBoundsException异常】编写一个程序,创建一个由100个随机选取的整数构成的数组;提示用户输入数

Java实验——改写个人银行账户-爱代码爱编程

此改写实验主要体现java纯面对对象语言的语法与框架,每个实验文件都进行了一定程度上的功能拓展,实验过程中我体验到了Java与C++语言基础层次上的的异同。 一、主函数 给出源码的c++语言框架中,形式上主函数是脱离于类的,而在java中主函数也需要包含于类,且为表示为类的静态方法。 源代码c++主函数: 改写后java主函数:二、包 包是java中用

java第三题实验——Java基本类库和集合框架的使用-爱代码爱编程

Java实验第三次 目录 1. 运用面向对象的程序设计思想,把表1中的学生信息存储在List集合(ArrayList或者LinkedList)中。编写程序实现下列功能:2. 编程模拟用户注册功能,要求:利用Set集合存放用户信息(含用户名、昵称、密码),实现用户注册功能,如果用户名已经存在,则无法注册。用户注册成功或者失败,请输出相应的提示信息。注意

gzip java 压缩_Java压缩技术(四) GZIP——Java原生实现-爱代码爱编程

熟悉linux的朋友可能都用过文件压缩命令,譬如最为简单的gzip命令。 相关链接: Java压缩技术(一) ZLib Java压缩技术(二) ZIP压缩——Java原生实现 Java压缩技术(三) ZIP解压缩——Java原生实现 Java压缩技术(四) GZIP——Java原生实现 Java压缩技术(五) GZIP相关——浏览器解析

java搭建tcp客户端_实验09——java基于TCP实现客户端与服务端通信-爱代码爱编程

TCP通信 需要先创建连接 - 并且在创建连接的过程中 需要经过三次握手 底层通过 流 发送数据 数据没有大小限制 可靠的传输机制 - 丢包重发 包的顺序的保障 传输速度相对比较慢 对于速度要求不太高 但是对可靠性要求比较高的场景下 - 文件上传 下载 因为TCP在通信的过程中 是需要创建连接的 连接的发起者称为客户端 监听端口等待被连接的

实验楼java输入输出流_java.io 包——字节流-爱代码爱编程

java 字节流 在 Java 中,把这些不同类型的输入、输出源抽象为流(Stream),而其中输入或输出的数据则称为数据流(Data Stream) 字节流主要操作byte类型数据,以byte数组为准,java 中每一种字节流的基本功能依赖于基本类 InputStream 和 Outputstream,他们是抽象类,不能直接使用。 InputS

java的基本输入语句,java的输入输出语句-爱代码爱编程

java教程java教程隐藏>> java.io package Java的输入输出 JAVA的输入/输出 ? 程序经常需要从外部获取数据或者向外部输出数据。 ? ? 位置:磁盘、网络、内存、另一...... Java 语言中最基本的输入输出流类是( )。 Ⅰ: InputStream Ⅱ... 在编写JavaApplication程序

Java硬核程序设计实验“输入输出流”详解【细节满满&源码完整】-爱代码爱编程

❥ 作为上学年 “Java硬核程序设计实验详解” 系列补充 ❥ 目录 ☀️| 一、实验目的 ☀️| 二、实验内容 ❀1. 题目:自定义异常类MyException,该类继承自Exception类 ❀2. 题目:使用 数据输出流和输入流 实现如下功能程序 ❀3. 题目:利用java I/O流实现学生信息的存储和读取 ❀4. 题目:统计

java程序设计——实验三-爱代码爱编程

《Java程序设计》实 验 报 告(三) 实验名称:java编程基础 实验地点:10-306 所使用的工具软件及环境: JDK1.7或1.8与Eclipse 一、实验目的: 掌握包、接口、异常处理的设计方法。掌握输入输出流类。 二、实验内容: 一.了解异常处理机制,使用try…catch 语句处理异常 1.异常类型匹配的处理方式

Java课程实验——实验7_IO流-爱代码爱编程

目录 1、 2、 (1)、使用字节流实现对图片进行复制操作 (2)、使用字节缓冲流对图片进行复制操作 3、 4、 1、 判断E盘指定目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称。 import java.io.*; public class SevenDemo { public static void main(

JAVA输入输出流-爱代码爱编程

JAVA输入输出流 文章目录 JAVA输入输出流一、实验目的二、实验步骤二级标题三级标题四级标题五级标题六级标题三、使用步骤1.实现代码2.测试总结 一、实验目的 利用文件字节流和文件字符流的构造方法创建对象,通过read和write方法对数据进行读取和写入,对实验中出现的问题进行分析,确定调试步骤和测试方法,直至文件读写操作成功。 二、

第八次 java实验 紫金学院 输入/输出流-爱代码爱编程

一、实验目的 熟悉流——输入/输出流的基本概念。掌握常用输入/输出流的使用。掌握文件与文件字节流操作(重点)。 二、实验原理及说明 在Java中把不同的数据源和程序间的数据传输(输入和输出或者数据的读和写)抽象地描述成“流”(Stream),计算机中处理的数据形式为“0”或者“1”这样的二进制位,流也称为数据流;Java中一切均为对象,流也是对象

Java实验三:输入输出与多线程-爱代码爱编程

一.实验项目要求 1.编写一个HelloWorld.java,选择合适的输入输出流将源程序文件复制一份到“Test.Java”文件中、并同时将文件的内容打印到命令提示符窗口中。 2.分别通过Thread和Runnable创建线程。 (1)自定义一个类Demo,使其继承Thread类。 1)在Demo类中重写run()方法,在方法编写一个for循环(

牛客每日刷题__18shou的博客-爱代码爱编程

✅作者简介:我是18shou,一名即将秋招的java实习生 ✨个人主页:_18shou 🔥系列专栏:牛客刷题专栏 👉 在线刷题面经模拟面试    题目 题目主要信息: 给出一组区间,区间包括起始点,要求将重叠的区间合并重叠后的区间按照起点位置升序排列 思路 方法: 排序+贪心(推荐使用) 知识点:贪心思想 贪心思想属于动态规划思