java 文件操作基础实验大集合
目录:
实验50:FileInputStream类的应用
实验51:FileOutputStream类应用
实验52:FileReader类的应用
实验53:FileWriter类的应用
实验54:文件操作 (模版程序)
(1) 学习File类的使用:新建文件夹程序
(2) 学习在程序中新建文件:写入文件程序
(3) 学习在程序中向文件写入内容:读取文件程序
(4) 学习在程序中读取文件内容:获取文件信息程序
(5) 学习在程序中查看目录内容:查看目录内容程序
(6) 学习在程序中删除文件:删除文件程序
实验55:读写基本类型数据
实验56:对象的写入与读取
实验57:对文件的随机访问
实验50:FileInputStream类的应用
编写一个Java程序,在main()中生成FileInputStream的一个实例,使它能打开文件myfile.txt ,并能够把文件的内容显示在屏幕上
import java.io.*;
public class App_50 {
public static void main(String[] args)throws IOException{
int i;
FileInputStream fin; // 注意:该类不能处理中文编码
fin = new FileInputStream("myfile.txt"); // 文件名
do{
i = fin.read();
if( i != -1){
System.out.print((char)i);
}
}while(i != -1); // 读到文件的末尾返回值为-1
fin.close();
}
}
实验51:FileOutputStream类应用
编写一个java程序,把文件myfile.txt中的内容复制到文件yourfile.txt文件中
import java.io.*;
public class App_51{
public static void main(String[] args)throws IOException{
int i;
FileInputStream fin;
FileOutputStream fout;
fin = new FileInputStream("myfile.txt"); // 创建一个FileInputStream对象,从myfile.txt中读取信息
fout = new FileOutputStream("yourname.txt");
do{
i = fin.read(); // 读入一个字节的二进制数据
if(i != -1){ // 将i的地位字节写入到输出流
fout.write(i);
}
}while(i != -1); // 若输入流当前位置没有数据返回-1
fin.close();
fout.close();
System.out.print("已经复制");
}
}
实验52:FileReader类的应用
编写一个java程序,读出文件myfile.txt的内容并把它们显示到屏幕上
import java.io.*;
public class App_52{
public static void main(String[] args)throws IOException{
char[] c = new char[500]; // 设置一个足够大的数组
FileReader fr = new FileReader("myfile.txt");
int num = fr.read(c); // 读取文件里的内容到数组里,并返回读取的长度
String str = new String(c, 0, num);
System.out.println("读取的字符个数为: " + num + ",其内容如下:");
System.out.println(str);
}
}
实验53:FileWriter类的应用
编写一个java程序,将字符串写入到文件中
import java.io.*;
public class App_53{
public static void main(String[] args) throws IOException{
FileWriter fw = new FileWriter("test.txt"); // 可以自动创建
String str1 = "广大的编程爱好者,你好\r\n";
String str2 = "欢迎使用java";
fw.write(str1);
fw.write(str2);
fw.close();
System.out.println("已经将文件写入到文件test.txt中");
}
}
实验54:文件操作 (模版程序)
(1) 学习File类的使用:新建文件夹程序,带参执行
import java.io.*;
public class File1{
public static void main(String[] args) throws IOException {
// 这里需要带参执行程序, 参数为需要创建的一个或多个文件名
if(args.length == 0){
System.out.println("没有需要创建的文件");
System.exit(1);
}
for(int i=0; i<args.length; i++)
new File(args[i]).createNewFile();
}
}
(2) 学习在程序中新建文件:写入文件程序
import java.io.*;
public class File2{
public static void main(String[] args) throws IOException {
BufferedWriter out = new BufferedWriter(new FileWriter("a.txt")); // 创建缓存区字符输出流,需要传入Write对象
out.write("广东金融学院");
out.newLine();
out.write("i love java i use java");
out.flush();
out.close();
}
}
(3) 学习在程序中向文件写入内容:读取文件程序
import java.io.*;
public class File3{
public static void main(String[] args)throws IOException{
String thisLine;
BufferedReader in = new BufferedReader(new FileReader("a.txt")); // 创建缓存区字符输入流,需要传如Reader对象
while((thisLine = in.readLine()) != null) // 每次读取一行,直到文件结束
System.out.println(thisLine);
in.close();
}
}
(4) 学习在程序中读取文件内容:获取文件信息程序
import java.io.*;
import java.util.*;
public class File4{
public static void status(String fileName) throws IOException{
System.out.println("------"+fileName+"------");
File f = new File(fileName); // 创建 File 类对象
if(!f.exists()){ // 测试文件是否存在
System.out.println("文件没收找到"+"\n");
return;
}
System.out.println("文件全名为:"+f.getCanonicalPath());
String p = f.getParent();
if(p!=null){
System.out.println("Parent directory: "+p); // 显示文件的父目录
}
if(f.canRead()){
System.out.println("File is readable."); // 测试文件是否可读
}
if(f.canWrite()){ // 测试文件是否可写
System.out.println("File is writable.");
}
Date d = new Date();
d.setTime(f.lastModified());
System.out.println("Last modifiled : " + d);
if(f.isFile()){
System.out.println("文件大小是: "+f.length()+"bytes");
}else if(f.isDirectory()){
System.out.println("它是目录");
}else{
System.out.println("既不是文件也不是目录");
}
System.out.println();
}
public static void main(String[] args){
if(args.length == 0){
System.out.println("缺少文件名");
System.exit(1);
}
for(int i=0; i<args.length; i++){
try{status(args[i]);}
catch(Exception e){ System.out.println(e); }
}
}
}
(5) 学习在程序中查看目录内容:查看目录内容程序
import java.io.*;
public class File5{
public static void main(String[] args){
String[] dir = new java.io.File("C:\\.").list(); // 查看C盘目录内容,查看当前目录直接用"."
java.util.Arrays.sort(dir);
for(int i=0; i<dir.length; i++){
System.out.println(dir[i]);
}
File[] drives = File.listRoots(); // 查看系统驱动器列表
for(int i=0; i<drives.length; i++){
System.out.println(drives[i]);
}
}
}
(6) 学习在程序中删除文件:删除文件程序
import java.io.*;
public class File6{
public static void main(String[] args){
File target = new File("a.txt"); // 删除当前目录下的 a.txt 文件
if(!target.exists())
System.out.println("文件不存在");
else{
if(target.delete()){
System.out.println("文件被删除");
}else{
System.out.println("文件不能删除");
}
}
}
}
实验55:读写基本类型数据
编写一个java程序,在当前文件夹下新建一个文件baseDate.txt,往该文件中写入一些基本类型的数据,再从该文件中读取这些数据并显示.
import java.io.*;
public class BaseDate {
public static void main(String[] args) {
FileOutputStream fout;
DataOutputStream dout;
FileInputStream fin;
DataInputStream din;
try {
fout = new FileOutputStream("d:\\temp"); // 为了方便查看,创建在了d盘跟目录下
dout = new DataOutputStream(fout);
dout.writeInt(10); // 将int型数据写入文件中
dout.writeLong(1234567894); // 将Long类型数据写入
dout.writeFloat(3.1415926f); // Float
dout.writeDouble(5659595.4484); // Double
dout.writeBoolean(true); // boolean
dout.writeChars("Goodbye!"); // 写入字符串
} catch (IOException e) { }
try {
fin = new FileInputStream("d:\\temp");
din = new DataInputStream(fin);
System.out.println(din.readInt()); // 从文件中读取数据到程序中
System.out.println(din.readLong());
System.out.println(din.readFloat());
System.out.println(din.readDouble());
System.out.println(din.readBoolean());
char ch;
while((ch=din.readChar())!='\0') { // 单个字符单个字符读取,直到末尾
System.out.print(ch);
}
din.close();
} catch (FileNotFoundException e) {
System.out.println("文件未找到!");
} catch(IOException e) {
}
}
}
实验56:对象的写入与读取
编写一个java程序,在当前文件夹下新建一个文件ReadWriteObject.txt,往该文件中写入两个学生对象信息,再从该文件中读取这两个学生对象信息并显示
import java.io.*;
class Student implements Serializable{ // 必须对该类序列化,即实现Serializable接口
String name;
int age;
String dept;
public Student(String newName, int newAge, String newDept){
name = newName;
age = newAge;
dept = newDept;
}
public String toString(){
return name + " " + age + " " + dept;
}
}
public class ReadWriteObject{
public static void main(String[] args){
Student w1 = new Student("张三", 20, "计算机系");
Student w2 = new Student("李四", 21, "金融系");
FileOutputStream fout;
ObjectOutputStream dout;
FileInputStream fin;
ObjectInputStream din;
File f = new File("ReadWriteObject.txt");
try{
f.createNewFile();
}catch(IOException e){
System.out.println(e);
}
try{
fout = new FileOutputStream(f);
dout = new ObjectOutputStream(fout); // 创建一个ObjectOutputStream对象
dout.writeObject(w1); // 写入序列化对象
dout.writeObject(w2);
dout.close();
}catch(IOException e){
System.out.println(e);
}
try{
fin = new FileInputStream(f);
din = new ObjectInputStream(fin); // 创建ObjectInputStream对象
Student r1 = (Student)din.readObject(); // 从文件中读取序列化对象
Student r2 = (Student)din.readObject();
System.out.println(r1);
System.out.println(r2);
din.close();
}catch(IOException e){
System.out.println(e);
}catch(Exception e){
System.out.println(e);
}
}
}
实验57:对文件的随机访问
编写一个java程序,在当前文件夹下新建一个文件RandomFIle.txt,向该文件中写入“abcdefghijklmnopqrstuvwxyz”,提示用户从键盘输入一个0~25之间的整数对象,根据用户输入的整数,从文件中读取相应的字符并显示。
import java.util.Scanner;
import java.io.*;
public class MyRandom{
public static void main(String[] args){
File f = new File("RandomFile.txt");
// 新建RandomFile文件
try{
f.createNewFile();
}catch(IOException e){
System.out.println(e);
}
String str = "abcdefghijklmnopqrstuvwxyz";
// 往文件中写入信息
try{
FileWriter fw = new FileWriter(f);
fw.write(str);
fw.close();
}catch(IOException e){
System.out.println(e);
}
// 从键盘输入0~25的整数
int a = -1;
Scanner sc = new Scanner(System.in);
while(a<0 | a>25){
System.out.println("从键盘输入一个0-25的整数:");
a = sc.nextInt();
}
// 随机访问文件中的字符
try{
RandomAccessFile inFile = new RandomAccessFile("RandomFile.txt", "r");
inFile.seek(a); // 将文件指针移动到整数a的位置
char c = (char)inFile.read(); // 在inFile中读取一个字符
inFile.close();
System.out.println("RandomFile.txt文件中第"+a+"个字符是"+c);
}catch(IOException e){
System.out.println(e);
}
}
}