Java语言实验6 常用类和输入输出流

合集下载

java输入输出流实验报告总结

java输入输出流实验报告总结

java输入输出流实验报告总结Java输入输出流是Java中非常重要的概念,也是Java程序设计的基础。

在Java 程序中,输入输出流用于处理与设备之间的数据传输,例如键盘、鼠标、文件等。

Java的输入输出流主要包含两种类型:字节流和字符流。

字节流以字节为最小读写单位,而字符流以字符为最小读写单位。

Java的输入流有很多种类型,例如:InputStream、ByteArrayInputStream、FileInputStream等。

这些输入流的共同特点是读取外部数据到程序中。

Java的输出流也有多种类型,例如:OutputStream、ByteArrayOutputStream、FileOutputStream等。

这些输出流的共同特点是将程序中的数据输出到外部。

下面将以实验报告的形式进行总结,详细介绍Java输入输出流的原理和使用方法。

实验一:字节流输入输出1. 实验目的:掌握字节流输入输出的基本使用方法。

2. 实验内容:编写一个程序,实现从文件中读取数据,然后将数据输出到另一个文件中。

3. 实验步骤:a. 创建一个输入流对象,用于读取原始文件的数据。

b. 创建一个输出流对象,用于将读取到的数据输出到目标文件中。

c. 循环读取输入流中的数据,直到读取到文件末尾。

d. 将读取到的数据写入输出流中。

e. 关闭输入流和输出流。

4. 实验结果:成功读取原始文件中的数据,并将数据输出到目标文件中。

实验二:字符流输入输出1. 实验目的:掌握字符流输入输出的基本使用方法。

2. 实验内容:编写一个程序,实现从键盘输入文字,然后将文字输出到屏幕上。

3. 实验步骤:a. 创建一个字符输入流对象,用于读取键盘输入的文字。

b. 创建一个字符输出流对象,用于将读取到的文字输出到屏幕上。

c. 循环读取输入流中的文字,直到读取到换行符。

d. 将读取到的文字写入输出流中。

e. 关闭输入流和输出流。

4. 实验结果:成功从键盘输入文字,并将文字输出到屏幕上。

Java的输入与输出流(实验报告)

Java的输入与输出流(实验报告)

成都大学实验报告实验项目名称Java的输入与输出流一、实验目的:1. 理解I/O流的概念,掌握其分类2. 掌握文本文件读写、二进制文件读写二、实验内容(包括源程序及相关说明):1. 分别使用FileWriter 和BufferedWriter 往文件中写入10万个随机数,比较用时。

源代码如下:(1)import java.io.*;public class Ex1_1 {public static void main(String[] args) throws IOException{long t=System.currentTimeMillis();FileWriter fw =new FileWriter("d:\\Ex1.txt");for(int i=1;i<=100000;i++){fw.write((int)(Math.random()*10000)+" \n");}fw.close();t=System.currentTimeMillis()-t;System.out.println("The elapsed: "+t);}}(2)import java.io.*;public class Ex1_1 {public static void main(String[] args) throws IOException{long t=System.currentTimeMillis();BufferedWriter fw=new BufferedWriter(new FileWriter("d:\\Ex1.txt"));for(int i=1;i<=100000;i++){fw.write((int)(Math.random()*10000)+"\n");}fw.close();t=System.currentTimeMillis()-t;System.out.println("The elapsed: "+t);}}2. 生成一个html文件,使其能显示2的幂次(0~9)的表格如下:代码如下:import java.io.*;public class Ex1_1 {public static void main(String[] args) throws IOException{BufferedWriter bw=new BufferedWriter(new FileWriter("d:\\Ex2.html"));bw.write("<table border=1 align=center width=200 height=250>");bw.newLine();bw.write("<tr><td align=center>Power of 2<td align=center>Value</tr>");for(int i=0;i<=9;i++){bw.write("<tr><td align=center>"+i+"<td align=center>"+Math.pow(i, 2)+"</tr>");}bw.write("</table>");bw.newLine();bw.close();}}3. 在文本文件bigbook.txt中包含有很长篇幅的英语短文,编写程序要求统计文件的所有短文中包含英文字母“A”的个数,并显示统计的时间。

java 输入输出流实验

java 输入输出流实验
clip.open(AudioSystem.getAudioInputStream(voiceFile));
}
catch(Exception exp){}
clip.start();
voiceWord.setEnabled(true);
}
}6.实验指导
(1)BufferedReader对象调用readLine方法可读取文件中的一行内容。
catch(IOException exp){}
}
}
public void run()
{
voiceWord.setEnabled(false);
try{
if(clip!=null)
{
clip.close();
}
clip=AudioSystem.getClip();
File voiceFile=new File(showWord.getText().trim()+".wav");
add(pCenter,BorderLayout.CENTER);
menubar=new JMenuBar();
menu=new JMenu("帮助");
help=new JMenuIter("关于学单词");
help.addActionListener(this);
menu.add(help);
menubar.add(menu);
FileReader类是Reader的子类,该类创建的对象称为文件字符输入流。文件字符输入流按字符读取文件中的数据。FileReader流按顺序读取文件,只要不关闭流,每次调用读取方法时FileReader流就会依次读取文件中其余的内容,直到文件的末尾或流被关闭。

JAVA——输入、输出流(File类)

JAVA——输入、输出流(File类)

JAVA——输⼊、输出流(File类)⼀、File类1、File类的对象主要⽤来获取⽂件本⾝的⼀些信息,例如⽂件所在的⽬录、⽂件的长度或⽂件读写权限等,不涉及对⽂件的读写操作。

2、创建⼀个File对象的构造⽅法有3个:File(String filename);//filename:⽂件名File(String directoryPath,String filename);//directoryPath:⽂件路径File(File dir,String filename);//dir:⼀个⽬录3、⽂件的属性经常使⽤File类的下列⽅法获取⽂件本⾝的信息package Test;import java.io.File;import java.io.IOException;/*File类//获取⽂件的名字public String getName() {return null;}//判断⽂件是否可读public boolean canRead(){return true;}//判断⽂件是否可被写⼊public boolean canWrite(){return true;}//判断⽂件是否存在public boolean exists(){return true;}//获取⽂件的长度(单位是字节)public void length(){}//获取⽂件的绝对路径public String getAbsolutePath(){return null;}//获取⽂件⽗母录public String getParent(){return null;}//判断是否是⼀个普通⽂件,⽽不是⽬录public boolean ifFile(){return true;}//判断⽂件是否是⼀个⽬录public boolean isDirectory(){return true;}//判断⽂件是否是隐藏⽂件public boolean isHidden(){return true;}//获取⽂件的最后修改时间public Object lastModified(){return null;}*///以下是例⼦:public class Test_1 {public static void main(String[] args) {String path = "E:\\soft";File f = new File(path,"E:\\soft");System.out.println(f.getName()+"是可读的吗:"+f.canRead());System.out.println(f.getName()+"的长度:"+f.length());System.out.println(f.getName()+"的绝对路径:"+f.getAbsolutePath());File file = new File(path,"b.txt");System.out.println("在当前⽬录下创建新⽂件"+file.getName());if(!file.exists()){try{file.createNewFile();System.out.println("创建成功");} catch (IOException e) {e.printStackTrace();}}}}4、⽬录例⼦:1package Test;23import java.io.File;45public class dir {6public static void main(String[] args) {7 File dirFile = new File(".");8 FileAccept fileAccept = new FileAccept() ;9 fileAccept.setExtendName("java");10 String filename[] = dirFile.list(fileAccept);11for(String name:filename){12 System.out.println(name);13 }14 }15 }1package Test;23import java.io.File;4import java.io.FilenameFilter;56public class FileAccept implements FilenameFilter { 7private String extendName;8public void setExtendName(String s){9 extendName = "."+s;10 }11public boolean accept(File dir, String name){12return name.endsWith(extendName);13 }14 }。

对java中的输入/输出的总结(字节流,字符流)

对java中的输入/输出的总结(字节流,字符流)

1,先是关于字节流import java.io.*;public class SimpleIO {/**System 类包含一些有用的类字段和方法。

它不能被实例化。

字段摘要static PrintStream err “标准”错误输出流。

static InputStream in “标准”输入流。

static PrintStream out “标准”输出流。

字段不是一个类,它是一个类的static属性out是System类的一个属性,而它的类型是PrintStreamPrintStream是一个类,它有个方法是println().*/public static void main(String[] args) {// TODO Auto-generated method stubchar c;System.out.println("请输入一个字符:");try{c=(char)System.in.read();System.out.println("你输入的字符是:"+c);}catch(IOException e){System.out.println("产生异常");}}}2,关于字符流的考虑。

import java.io.*;public class SimpleIOs {/**ng.Object继承者 java.io.Reader继承者 java.io.InputStreamReader构造方法摘要InputStreamReader(InputStream in)创建一个使用默认字符集的 InputStreamReader。

InputStreamReader(InputStream in, Charset cs)创建使用给定字符集的 InputStreamReader。

InputStreamReader(InputStream in, CharsetDecoder dec)创建使用给定字符集解码器的 InputStreamReader。

Java的输入输出流

Java的输入输出流

字节输入/输出流
读取数据的方法 int read() throws IOException ; int read(byte[] b) throws IOException ;
注意:read方法若返回-1,则表明当前读取位置已经 int read(byte[] b,int off,int len) throws 到达流的末尾。 IOException ; 例如:int n; while((n=fis.read())!=-1){ //数据处理 }
public static final char separator;
文件类和文件的随机访问
文件的随机访问类
RandomAccessFile类可以对文件进行随机读写 操作。 创建一个RandomAccessFile对象
RandomAccessFile(File file,String r:只读;rw:可读可写 例如:File file=new File(“d:\\a.txt”); mode) ;
• FileInputStream/FileOutputStream
字节输入/输出流
InputStream类及其子类
InputStream类是抽象类,不能直 接生成对象,它是所有字节输入流类的 父类。该类提供了输入处理的基本方法, 注意:该类中的大多数方法都可能抛出IOException异常, 它的子类一般都重写这些方法。
因此调用它们时,应放在try…catch块中,捕获和处理 IOException异常。
public void mark(int readlimit); public void reset();
字节输入/输出流
OutputStream类及其子类
OutputStream类是抽象类,不能直 接生成对象,它是所有字节输出流类的 父类。该类提供了输出处理的基本方法, 注意:该类中的大多数方法都可能抛出IOException异常, 它的子类一般都重写这些方法。

JAVA6输入输出

JAVA6输入输出
下指定类型的文件。
5 运行可执行文件
第6章 输入/输出
File构造方法举例
import java.io.*; public class E{
public static void main(String[] args){ File f1=new File(“D:\\3000\\a.java”);//假设不存在该文件 File f2=new File("c:\\1000"); System.out.println(f1.getName()+"的长度:"+f1.length()); System.out.println(f1.getName()+"绝对路径:
第6章 输入/输出
ObjectInputStream类和ObjectOutputStream类
ObjectInputStream类和ObjectOutputStream类提供了读 写对象的方法
public ObjectInputStream (InputStream in) public ObjectOutputStream (OutputStream out) 只有实现了Serializable接口的类产生的对象才可以被写到文件中。 如果类中有类类型的成员变量,则必须保证该成员变量对应的类 也是可序列化的。
public FileReader(File filename) public FileWriter(File filename)
第6章 输入/输出
import java.io.*;
public class E{
public static void main(String[] args){ char a[]="四月十二日10点发起总攻".toCharArray(); //转换为字符数组 int n=0,m=0;

JAVA课件 LESSON6 JAVA的输入输出流

JAVA课件  LESSON6 JAVA的输入输出流

第六讲 Java的输入输出流1课前思考如何读取硬盘上的某个文件内容? 2. 如何知道文件系统中有哪些目录和子目 录? 3. 如何往硬盘上写文件? 4. 如何接收键盘输入?1.2java.io包字节流从InputStream和OutputStream派生出来的一系 列类,以字节(byte)为基本处理单位。

字符流从Reader和Writer派生出的一系列类,以16位的 Unicode码表示的字符为基本处理单位。

3流在计算机中,“流”的概念是1984年由C语言 第一次引入的。

“流”可以看作是一个流动 的数据缓冲区,数据从数据源流向数据目 的地。

4字节流InputStream、OutputStream FileInputStream、FileOutputStream PipedInputStream、PipedOutputStream ByteArrayInputStream、 ByteArrayOutputStream FilterInputStream、FilterOutputStream DataInputStream、DataOutputStream BufferedInputStream、BufferedOutputStream5字符流Reader、Writer InputStreamReader、 OutputStreamWriter FileReader、FileWriter CharArrayReader、CharArrayWriter PipedReader、PipedWriter FilterReader、FilterWriter BufferedReader、BufferedWriter StringReader、StringWriter6其它文件处理 File、RandomAccessFile; 接口 DataInput、DataOutput、ObjectInput、 ObjectOutput;7I/O处理的类层次FileInputStream PipedInputStream ByteArrayInputStream InputStream SequenceInputStream StringBufferInputStream FilterInputStream ObjectInputStream ObjectInputBufferedInputStream LineNumberInputStream PushbackInputStream DataInputStream DataInputRandomAccessFile8I/O处理的类层次ObjectOutput ObjectOutputStream FileOutputStream OutputStream PipedOutputStream ByteArrayOutputStream File FileDescriptor StreamTokenizer FilterOutputStream RandomAccessFileDataOutput DataOutputStream BufferedOutputStream PrintStreamFileNameFilter9InputStream从流中读取数据int read( ); int read( byte b[ ] ); int read( byte b[ ], int off, int len ); int available( ); long skip( long n );10InputStream关闭流close( );使用输入流中的标记void mark( int readlimit ); void reset( ); boolean markSupported( );11OutputStream输出数据void write( int b ); void write( byte b[ ] ); void write( byte b[ ], int off, int len );flush( )刷空输出流,并输出所有被缓存的字 节。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)按要求,将代码替换为Java代码。
源代码:
packaget2;
ng.*;
classStringBufferExample
{
publicstaticvoidmain(Stringargs[ ])
{
StringBufferstr=newStringBuffer("ABCDEFG");
intn1=Integer.parseInt(s6);//将s6转化成int型数据
doublen2=Double.parseDouble(s7);//将s7转化成double型数据
doublen=n1+n2;
System.out.println(n);
Strings8=newString("ABCDEF");
}
}
}
运行结果:
3、日期类
任务一:Date和Calendar的使用
(1)内容
编写一个Java应用程序用户从键盘输入两个日期,程序将判断两个日期的大小关系以及两个日期之间的间隔天数。
(2)
源代码:
packaget3;
importjava.util.*;
classDateExample
{
publicstaticvoidmain(Stringargs[ ])
一、实验目的
1、掌握String类的常用方法。
2、掌握StringBuffer类的常用方法。
3、掌握Java提供的日期类Date和Calendar。
4、掌握字符输入、输出流用法。
5、掌握缓冲流的用法。
二、实验内容及步骤
1、String类的使用
(1)内容
编写一个java应用程序,判断两个字符串是否相同,判断字符串的前缀、后缀是否与某个字符串相同,以及按字典比较来比较两个字符串的大小关系,进行字符串检索,创建子字符串,将数字型字符串转化为熟悉,将字符串放到数组中,用字符串数组创建字符串等。
longtimeOne=calendar.getTimeInMillis() ;// calendar表示的时间转换成毫秒。
calendar.set(yearTwo,monthTwo,dayTwo);//将calendar的时间设置为yearTwo年monthTwo月dayTwo日
longtimeTwo=calendar.getTimeInMillis();// calendar表示的时间转换成毫秒
如输入:2011
4
输出结果为:
2011- 4
日一二三四五六
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
(2)
源代码:
packaget31;
ng.*;
importjava.util.Scanner;
printMonthTitle(year,month);
printMonthBody(year,month);
}
publicstaticvoidprintMonthTitle(intyear,intmonth) {
System.out.println(" "+getMonthName(month) +" "+year);
if(s1.equals(s2))//判断s1与s2是否相同
{
System.out.println("s1与s2相同");
}
else
{
System.out.println("s1与s2不相同");
}
Strings3=newString("22030219851022024");
if(s3.startsWith("220302"))//判断s3的前缀是否是“220302”
StringfileName=path.substring(12,18);//获取path中“A.java”子字符串
System.out.println("c:\\java\\jsp\\A.java中含有的文件名:"+fileName);
Strings6=newString("100"),
s7=newString("123.678");
publicclassCalendar {
publicstaticvoidmain(String[]args) {
//TODOAuto-generated method stub
Scannerinput=newScanner(System.in);
System.out.print("请输入年份: ");
switch(month) {
case1:monthName="一月";break;
case2:monthName="二月";break;
{
Scannerread=newScanner(System.in);
System.out.println("输入第一个日期的年份:");
intyearOne=read.nextInt( );
System.out.println("输入该年的月份:");
intmonthOne=read.nextInt( );
Datedate1=newDate(timeOne);//用timeOne做参数构造date1
Datedate2=newDate(timeTwo);//用timeTwo做参数构造date2
if(date2.equals(date1))
{
System.out.println("两个日期的年、月、日完全相同");
(2)按要求,将代码替换为Java代码。
packaget1;
classStringExample
{
publicstaticvoidmain(Stringargs[ ])
{
Strings1=newString("you are a student"),
s2=newString("how are you");
System.out.printf("%d年%d月%d日和%d年%d月%d日相隔%d天",yearOne,monthOne,dayOne,yearTwo,monthTwo,dayTwo,相隔天数);
}
}
运行结果:
*任务二:简单日历的实现
(1)内容
建立简单的日历,该日历能根据用户输入年月显示相应日历。
intmonthTwo=read.nextInt( );
System.out.println("输入该月份的日期:");
intdayTwo=read.nextInt( );
Calendarcalendar=Calendar.getInstance();//初始化日历对象。
calendar.set(yearOne,monthOne,dayOne);//将calendar的时间设置为yearOne年monthOne月dayOne日
StringBufferyourStr=newStringBuffer("i Love THIS GaME");
for(i)
if(Character.isLowerCase(yourStr.charAt(i))){
c=Character.toUpperCase(yourStr.charAt(i));//将yourStr中的大写字符替换为对应的小写字符,小写字符替换为对应的大写字符
if(Character.isLowerCase(c))
{
c=Character.toUpperCase(c);
otherStr.setCharAt(start,c);//把字符改为大写字符
}
start=otherStr.indexOf(" ",start);//查找下一个空格。
}
System.out.println(otherStr);
}
elseif(date2.after(date1))
{
System.out.println("您输入的第二个日期大于第一个日期");
}
elseif(date2.before(date1))
{
System.out.println("您输入的第二个日期小于第一个日期");
}
long相隔天数=(Math.abs(timeTwo-timeOne))/(1000*60*60*24);//计算两个日期相隔天数
chara[ ]=s8.toCharArray();//将s8存放到数组a中
for(inti=a.length-1;i>=0;i--){
System.out.printf("%3c",a[i]);
}
}
}
运行结果:
2、StringBuffer类的常用方法
(1)要求:
编写一个应用程序,使用StringBuffer对象实现对字符串的编辑操作,如替换字符串的某些字符、删除字符串中的某些字符、在字符串中插入或尾加新的字符串等。
System.out.println("输入该月份的日期:");
intdayOne=read.nextInt( );
System.out.println("输入第二个日期的年份:");
intyearTwo=read.nextInt( );
相关文档
最新文档