第一篇:Java 实验 文件管理与IO流
作业要求:每个题保存为一个.java文件,保存在同一工程文件夹中,文件夹的名字为E:Java你的班级+姓名,例如:E:Java信息11张三。
注意:上交的程序包含程序的执行结果,以注释的形式附在程序后面。
实验六文件管理与I/O流
一、实验目的1.熟悉用文件File类创建、删除、查看文件或目录。
2.字节流、字符流、缓冲流、随机流等流式文件的创建,读写操作。
3.用字符流和缓冲流从键盘接受字符串的方法。
二、实验内容
1.先运行该程序。源文件是sy6_1.java。然后按【思考问题】分析程序。
import java.io.*;
public class sy6_1{
public static void main(String[] args)throws Exception
{
int x=0;
File Mypath;
Mypath=new File(“E:aaaa”);
if(!Mypath.exists())
{System.out.println(“创建新目录”);Mypath.mkdir();}
else System.out.println(“目录已存在”);
File Myfile1=new File(Mypath,“myfile1.txt”);
File Myfile2=new File(Mypath,“myfile2.txt”);
File Myfile3=new File(Mypath,“myfile3.txt”);
FileInputStream Fin=new FileInputStream(Myfile1);
FileOutputStream Fout=new FileOutputStream(Myfile1);
DataOutputStream Dout=new DataOutputStream(new FileOutputStream(Myfile2));
DataInputStream Din=new DataInputStream(new FileInputStream(Myfile2));
PrintWriter PWout=new PrintWriter(new FileWriter(Myfile3));
RandomAccessFile RAread=new RandomAccessFile(Myfile3,“r”);
String str;
int num1;
BufferedReader buf;//缓冲流
buf=new BufferedReader(new InputStreamReader(System.in));
System.out.print(“请输入一个小于255整型数:”);
while(!(str=buf.readLine()).equalsIgnoreCase(“q”))
{ System.out.print(“请输入另一个小于255整型数,按Q结束:”);
num1=Integer.parseInt(str);
Fout.write(num1);
}Fout.close();
System.out.println(“你刚输入的数据是:”);
while((x=Fin.read())!=-1)
{ System.out.println(x);
}Fin.close();
System.out.print(“请输入int范围内整型数:”);
while(!(str=buf.readLine()).equalsIgnoreCase(“q”))
{ System.out.print(“请输入另一个整型数,按Q结束:”);
num1=Integer.parseInt(str);
Dout.writeInt(num1);
}Dout.close();
int leng=Din.available()/4;
int xxx=0;
while(xxx { xxx++; x=Din.readInt(); System.out.println(x); } Din.close(); System.out.print(“请输入第一个字符串:”); while((str=buf.readLine())!=null) { System.out.print(“请输入另一个字符串,按Ctrl+Z结束:”); PWout.println(str);//写入myfile3.txt中 } PWout.close(); RAread.seek(0); while(RAread.getFilePointer() {System.out.println(RAread.readLine());//从myfile3.txt中一行一行读并输出在控制台上 } RAread.close(); System.out.println(“完成”); } } 【思考问题】 ① 本程序共用到哪几种流式文件?都用于做什么? 答:基本输入输出流:System.in.输入(从键盘) System.out.输出(显示器) 字节流类:FileOutputStream 文件输出 FileInputStream 文件输入 DataOutputStream数据输出 DataInputStream数据输入 字符流类:PrintWriter输入 缓冲文件流:BufferedReader ② 运行完程序后,请用“我的电脑”找到创建的文件,并分别打开文件看其内容,你 看到的是你输入的数据吗? 答:myfile1和myfile2中的数据非输入数据,myfile3中可以看见输入的数据。③ 将创建输入流对象Fin放在输出流Fout前,看发生什么? ④ 对第二种流式文件判断文件占用字节的长度用available()方法,而此处用int leng=Din.available()/4;为什么除以4? 2.按照第1题的内容,修改程序要求每次重新运行不覆盖原内容,把所有其它流式文件全部改用随机流式文件来实现,新的数据填加在文件尾,然后读出校验。 import java.io.*; public class sy6_2 { public static void main(String[] args)throws Exception { File Mypath; Mypath = new File(“E:aaa”); if(!Mypath.exists()) {System.out.println(“创建新目录”);Mypath.mkdir();} else System.out.println(“目录已存在”); File Myfile1 = new File(Mypath, “myfile1.txt”); File Myfile2 = new File(Mypath, “myfile2.txt”); File Myfile3 = new File(Mypath, “myfile3.txt”); RandomAccessFile rf1 = new RandomAccessFile(Myfile1, “rw”); RandomAccessFile rf2 = new RandomAccessFile(Myfile2, “rw”); RandomAccessFile rf3 = new RandomAccessFile(Myfile3, “rw”); String str; int num1; BufferedReader buf;//缓冲流 buf = new BufferedReader(new InputStreamReader(System.in)); System.out.print(“请输入一个小于255整型数:”); rf1.seek(rf1.length());//指针移到文件尾进行写操作 while(!(str=buf.readLine()).equalsIgnoreCase(“q”)) { System.out.print(“请输入另一个小于255整型数,按Q结束:”);num1=Integer.parseInt(str); rf1.write(num1);//将整型数作为ascii码值所对应的字符写入myfile1.txt中} rf1.seek(0);//指针移到文件头进行读操作 int x=0; while((x=rf1.read())!=-1) { System.out.println(x); } rf1.close(); System.out.print(“请输入int范围内整型数:”); rf2.seek(rf2.length()); while(!(str = buf.readLine()).equalsIgnoreCase(“q”)){ System.out.print(“请输入另一个整型数,按Q结束:”); num1 = Integer.parseInt(str); rf2.writeInt(num1); } int x1 = 0; for(int l = 0;l { rf2.seek(l*4); x1 = rf2.readInt(); System.out.println(x1); } rf2.close(); System.out.print(“请输入第一个字符串:”); rf3.seek(rf3.length()); while((str = buf.readLine())!= null){ System.out.println(“请输入另一个字符串,按Ctrl+Z结束:”);rf3.writeUTF(str);//写入myfile3.txt中 } rf3.seek(0); while(rf3.getFilePointer()< rf3.length()){ System.out.println(rf3.readUTF());//从myfile3.txt中读出字符串并输出在控制台上 } rf3.close(); System.out.println(“完成”); } } 三、实验报告要求 1.回答第1题【思考问题】提出的问题。 2.写出第二题要求的源程序。 实验12:Java高级I/O流程序设计 实验时间:实验地点: 一、实验目的及要求 (1)掌握文件类File的使用。 (2)理解随机存取文件类RandomAccessFile的使用。 二、实验设备环境及要求 三、实验任务 (1)按要求编写Java Application程序,并编译、运行这个程序。 四、实验内容与步骤 1.输出当前目录下my.txt文件的基本信息。 import java.io.*; import java.util.*; public class FileTest{ public static void main(String args[]){File f=new File(“my.txt”);System.out.println(“Absolute path: ” + f.getAbsolutePath()+“n Can read: ” + f.canRead()+“n Can write: ” + f.canWrite()+“n getName: ” + f.getName()+“n getParent: ” + f.getParent()+“n getPath: ” + f.getPath()+“n length: ” + f.length()+“n lastModified: ” + new Date(f.lastModified()));if(f.isFile())System.out.println(“It's a file”); }}else if(f.isDirectory())System.out.println(“It's a directory”); 2.编写一个Java Application程序,实现如下的设计功能:运行该程序可以列出当前目录下的文件。 import java.io.*; class FileDir{ public static void main(String args[]){ File f=new File(“D:”); File fs[]=f.listFiles(); for(int i=0;i if(fs[i].isFile()) System.out.println(fs[i].getName()); else System.out.println(“ } } } 五、实验指导与处理 六、分析讨论 实验教师评语成绩 签名: 日期: Java实验五IO流的一般使用 实验目的:掌握文件类的使用,了解一般流的基本应用。加深处理代码的能力。实验内容: import java.io.*; public class lijun43 { public static void main(String args[]) { File f = new File(“f:mldn.txt”); if(f.exists()) { System.out.println(“文件已存在。”); } else { System.out.println(“文件不存在”); } } }; import java.io.*; public class lijun45 { public static void main(String args[]) { loop(“d:”); } public static void loop(String dir) { File f = new File(dir); String str[] = null; if(f.isDirectory()) { str = f.list(); for(int i=0;i { loop(dir+“”+str[i]); } } else { System.out.println(dir); } } }; 实验结果: 1f:mldn.txt在f盘中出现了。 心得体会: 需要多尝试,流主要是对文件侠的操作,比如文件侠创建,移动,删除等,打开一个流, 实验2文件与输入输出流(1) 一、实验目的 能够使用File类表示文件或目录,获取相关信息,并进行文件操作; 能够利用InputStream和OutputStream的子类进行字节读、写操作,明白其优点及不足; 能够用FileInputStream和FileOutputStream进行文件读写的操作; 理解“逐层包装”思想,能够利用“数据流”(DataInputStream和DataOutputStream)包装字节流,方便各类数据的读写; 能够利用“缓冲字节流”(BufferedInputStream和BufferedOutputStream)包装字节流,加快数据的读写速度; 熟知System.in和System.out是PrintStream的实例。 二、实验步骤 在Eclipse环境中导入项目“code(lab_2)”,然后按要求完成各小题: 1.打开FileTest.java文件,请按下列要求进行操作: (1)按要求填充程序所缺代码; (2)程序的运行需要用到一个命令行参数,请分别用一个文件、目录作参数来运行程序,看一看结果有什么不同。 (在Eclipse中设置命令行参数方法:Run/Open Run Dialog „/(x)=Arguments设置) 2.在上一题的基础上,修改程序,使之具备输出指定目录下所有子目录中文件绝对路径名、大小的功能,如下所示: 子目录:C:jdk1.6.0sample 子目录:C:jdk1.6.0samplewebservices 子目录:C:jdk1.6.0samplewebservicesEbayServer 文件: C:jdk1.6.0samplewebservicesEbayServerbuild.properties,大小: 512 字节 文件: C:jdk1.6.0samplewebservicesEbayServerbuild.xml,大小: 3168 字节1 …… 提示:参考课件 FileSpace.java内容,通过一个以“路径名”为参数的静态方法来实现:该方法先判断“路径名”是一个文件,还是一个目录?如果是文件,则输出其绝对路径和大小;若为一个目录,则先显示目录绝对路径,再列出该目录下的所有子目录和文件,通过循环和递归方法来执行后续处理。 3.文件FileOutputStreamTest.java的功能是:利用FileOutputStream类向myfile.txt文件写入'0'~'9'和“用字节流写入文件内容”,请填充程序所缺代码,并运行程序。然后打开myfile.txt文件,查看其内容是否与要求相符? 4.文件FileInputStreamTest1.java的功能是:利用FileInputStream类以“逐字节”方式读取myfile.txt文件内容,并输出。请填充程序所缺代码,并运行程序。问题:为什么程序输出的内容为乱码? 5.在FileInputStreamTest1.java的基础上,编写程序FileInputStreamTest2.java,利用FileInputStream类以“字节数组”方式读取myfile.txt文件内容,能正确输出,解决乱码问题。 思考题:乱码问题是怎样解决的? 6.若要将信息“Java开发典型模块大全”(书名)、“明日科技”(作者)、79.5(价格)等信息以UTF、double类型保存到文件books.txt中,请用“数据流”类编程实现。 package Stream; import java.io.*; public class Io { public void test1()throws Exception{ File file=new File(“E:/txt.txt”); if(file.exists()){ System.out.println(“是否是文件:”+file.isFile()); System.out.println(“文件名是:”+file.getName()); System.out.println(“路径是:”+file.getPath()); System.out.println(“绝对路径是:”+file.getAbsolutePath());System.out.println(“上级目录是:”+file.getParent());System.out.println(“文件大小是:”+file.length()+“字节”);} else { file.createNewFile(); } } public void test2()throws Exception{//以字节流方式读取 File file=new File(“E:/txt1.txt”); FileInputStream fi=new FileInputStream(file); byte[] content= new byte[fi.available()]; /*for(int i=0;i content[i]=(byte)fi.read(); }//读取长度后,将其转换成字符型 *///第一种方式 fi.read(content);//第二种方式 String str=new String(content); System.out.println(str.trim()); } public void test3()throws Exception{//以字节流方式写入数据 File file=new File(“E:/txt1.txt”); FileOutputStream fo=new FileOutputStream(file); byte[]content=new String(“你是一个”).getBytes(); fo.write(content); content=new String(“呵呵”).getBytes(); fo.write(content); fo.close(); } public void test4()throws Exception{//用的缓冲方式文本读取 FileReader file=new FileReader(“E:/txt1.txt”); BufferedReader br=new BufferedReader(file); StringBuffer str=new StringBuffer(); String sw=br.readLine(); if(sw!=null){ str.append(sw+“ n”); } System.out.println(str); } public void test5()throws Exception{//用缓冲的方式写入数据然后再读入数据 FileWriter file=new FileWriter(“E:/txt1.txt”); BufferedWriter bw=new BufferedWriter(file); for(int i=1;i<=10;i++){ bw.write(“这是第”+i+“行”); bw.newLine(); } bw.close();//写放数据 FileReader file1=new FileReader(“E:/txt1.txt”); BufferedReader br=new BufferedReader(file1); StringBuffer str=new StringBuffer(); String sw=br.readLine(); if(sw!=null){ str.append(sw+“ n”); } System.out.println(str); } public void test6(){//删除文件 File file=new File(“E:/text.txt”); if(file.exists()){ System.out.println(“开始删除文件 :”+file.getPath());if(file.delete()){ System.out.println(“文件删除成功”); } else { System.out.println(“文件删除失败”); } } else { System.out.println(“该文件不存在”); } } public void test7()throws Exception{//创建 一个文件夹---创建一个目录或路径 File file=new File(“E:/txt1.txt”); if(file.exists()==false){ file.createNewFile(); } } public void test8()throws Exception {//* 将txt.txt复制文件到txt12.txt去;以字节流的的形式复制 File file=new File(“E:/txt.txt”); FileInputStream fi=new FileInputStream(file); byte[] content= new byte[fi.available()]; fi.read(content); fi.read(content, 0, content.length); String str=new String(content); System.out.println(str); File file1=new File(“E:/txt12.txt”); if(file.exists()==false){ file.createNewFile(); }//如果不存在该文件则创建一件文件 再行进复制 FileOutputStream fo=new FileOutputStream(file1,true);fo.write(content); fo.flush(); fo.close(); fi.close();//关闭流 } public void test9()throws Exception {//另和种方式复制文件--从缓冲的形式复制 FileReader file=new FileReader(“E:/txt.txt”); BufferedReader br=new BufferedReader(file); String str=br.readLine(); //从文件 里面读取出来 FileWriter file1=new FileWriter(“E:/txt1.txt”); BufferedWriter bw=new BufferedWriter(file1); while(str!=null){ bw.write(str); bw.newLine(); str = br.readLine(); } bw.flush(); bw.close(); br.close(); } public void test10()throws Exception{ File file=new File(“E:/txt.txt”); InputStream is = new FileInputStream(file); byte[] array = new byte[3]; int hasRead = 0; File file1=new File(“E:/txt1.txt”); OutputStream os = new FileOutputStream(file1); while((hasRead=is.read(array, 0, array.length))!=-1) { System.out.println(“读取了”+hasRead+“个字节”); for(int i=0;i { System.out.println(“第”+(i+1)+“个:”+array[i]); } /**每次从数组array里写入字节到文件 读多少写多少*/ os.write(array, 0, hasRead); } os.flush(); os.close(); is.close(); } public static void main(String args[])throws Exception{ Io t=new Io(); t.test9(); } }第二篇:实验12:Java高级IO流程序设计
第三篇:Java实验五 IO流的一般使用
第四篇:java 文件与输入输出流
第五篇:JAVA(IO流方法)