实验10 流与文件操作
一、实验目的
理解和掌握JAVA程序中实现输入/输出的技术和有关的类与方法。
二、实验要求
- 掌握File类常用的方法
- 掌握标准数据流及Scanner类的应用。
- 掌握文件输入输出流使用
- 掌握数据输入输出流使用
- 了解对象流的使用。
三、实验内容
(一) 使用File类,测试文件与文件夹属性
1.测试理解File类
package FileTest1;
import java.io.*;
public class TestFile1 {
public static void main(String args[]) {
// 磁盘上已有文件的测试(查磁盘上的文件与文件夹,替换下列文件夹与文件名)
File f1 = new File("C:\WINDOWS", "win.ini");
System.out.println("文件win.ini存在吗:" + f1.exists());
System.out.println("文件win.ini是可读的吗:" + f1.canRead());
System.out.println("文件win.ini是可写的吗:" + f1.canWrite());
System.out.println("文件win.ini是隐藏的文件吗:" + f1.isHidden());
System.out.println("文件win.ini的绝对路径:" + f1.getAbsolutePath());
System.out.println("文件win.ini的路径:" + f1.getPath());
System.out.println("文件win.ini的文件名:" + f1.getName());
System.out.println("文件win.ini的长度:" + f1.length());
System.out.println("文件win.ini的最后修改时间(长整形):" + f1.lastModified());
File f2 = new File("C:\WINDOWS");
System.out.println("目录C:\WINDOWS:存在吗:" + f2.exists());
System.out.println("C:\WINDOWS:是目录吗?" + f2.isDirectory());
System.out.println("C:\WINDOWS:是文件吗?" + f2.isFile());
System.out
.println("----------------------------------------------------------------------");
File fileName[] = f2.listFiles();
for (int i = 0; i < fileName.length; i++) {
if (fileName[i].isFile())
System.out.println("文 件 名 称:" + fileName[i].getName());
else
System.out.println("文件夹名称:" + fileName[i].getName());
}
System.out
.println("----------------------------------------------------------------------");
String fileNameStr[] = f2.list();
for (int i = 0; i < fileName.length; i++) {
System.out.println("文件(夹)名称:" + fileNameStr[i]);
}
System.out
.println("----------------------------------------------------------------------");
// 磁盘上没有的文件夹的测试
File f3 = new File("E:\8000");
System.out.println("目录E:\8000存在吗:" + f3.exists());
f3.mkdir();
System.out.println("目录E:\8000存在吗:" + f3.exists());
f3.delete();
System.out.println("目录E:\8000存在吗:" + f3.exists());
// 磁盘上没有的文件的测试
File f4 = new File("E:\9000");
if (!f4.exists())
f4.mkdir();
File f5 = new File(f4, "abc.txt");
System.out.println("文件abc.txt存在吗?:" + f5.exists());
try {
if (!f5.exists())
f5.createNewFile();
System.out.println("文件abc.txt存在吗?:" + f5.exists());
} catch (IOException e) {
System.out.println("异常" + e);
}
}
}
2.测试可执行文件
package FileTest1;
import java.io.*;
public class TestFile2 {
public static void main(String args[]) {
try {
Runtime ce = Runtime.getRuntime();
File file = new File("c:/windows", "Notepad.exe");
ce.exec(file.getAbsolutePath());
} catch (Exception e) {
System.out.println(e);
}
}
}
(二) 编程
- 编程:使用Scanner类从键盘输入10个int类型的数,求累加和和平均值。
-
import java.util.Scanner; public class 二1 { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("请输入10个数"); Scanner in = new Scanner(System.in); int sum=0; for(int i=1;i<=10;i++) { sum+=in.nextInt(); } System.out.println("和为:"+ sum+" 平均数为:"+sum*1.0/10); } }
- 将保存在本地机当前文件夹中的文本文件的内容在屏幕上显示出来,然后将其另存为 另一个文件。
import java.io.*; public class 二2 { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub FileInputStream rf = new FileInputStream("C:\WINDOWS\win.ini"); FileOutputStream wf = new FileOutputStream("C:\CYS\cys.txt"); int n=1000; byte buffer[] = new byte[n]; while((rf.read(buffer,0,n)!=-1)&&(n>0)) { System.out.println(new String(buffer)); wf.write(buffer,0,buffer.length); } System.out.println(); rf.close(); wf.close(); } }