java io简单使用

public class CreateFile {
	public static void main(String[] args) {
		/*
		 * 文件夹的创建和文件的生成
		 */

		File f1 = new File("E:\study");
		if (f1.exists()) {
			System.out.println("该文件夹已经存在");
		}else{
			f1.mkdir();//创建文件夹(目录)创建单层目录
			//f1.mkdirs();创建多层目录文件夹("e:/study/myfile")
		}
		File f2 = new File("e:\study\file.txt"); 
		try {
			f2.createNewFile();//创建指定路径下的文件   .txt
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		/*
		 * 用FileOutputStream输出流 通过字节数组 对文件添加内容
		 */
		try {
			//创建一个文件输出流对象,对文件里面写内容
			OutputStream fops = new FileOutputStream("e:\study\file.txt");
			String stu = "我是美女!!!
我的名字是娜娜";//
实现输出换行
			byte[] b= stu.getBytes();//得到字符串的字节数组   
			
			try {
				fops.write(b, 0, b.length);//把字节数组写入文件
			} catch (IOException e) {
				e.printStackTrace();
			}
			try {
				fops.close();//关闭文件输出流
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		
		/*
		 * FileWrite 输出流 通过字符 对文件添加内容
		 */
		try {
			//true  不会覆盖前面写的内容
			FileWriter fw = new FileWriter("e:\study\file.txt",true);
			String str = "TheStar";
			fw.write(str);
			fw.close();
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
		
	}

}

  

public class FileClass {

	
	public static void main(String[] args) {
		
		//根据路径目录实例化一个文件流对象
		File file = new File("E:\");
		if (file.isFile()) {//是否为文件
			System.out.println("是一个文件");
		}else {
			File[] files = file.listFiles();//文件数组
			List fileList = new ArrayList();
			
			for (int i = 0; i < files.length; i++) {
				//列出目录
				if(files[i].isDirectory()){
					System.out.println("["+files[i].getPath()+"]");//是目录就输出路径名
				}else {
					fileList.add(files[i]) ;//文件就存在集合中
				}
			}
			//列出文件
			for (int i = 0; i < fileList.size(); i++) {
				System.out.println(fileList.get(i));
			}
			
		}

	}

}

  

package com.direct.io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class WRObject implements Serializable{
	//对象系列化必须实现Serializeble接口的类
	// 如果用transient声明一个实例变量,用transient关键字标记的成员变量不参与序列化过程。
	private String name;
	private int age;
	public WRObject(String name,int age){
		this.name = name;
		this.age = age;
	}
	public void display(){
		System.out.println("name:"+name);
		System.out.println("age:"+age);
	}
	
	public static void main(String[] args) {
		String path = "e:\study\file.txt";//路径
		try {
			ObjectOutputStream oout = new ObjectOutputStream(new FileOutputStream(path));
			WRObject stu = new WRObject("Star", 18);
			oout.writeObject(stu);//把对象输出流,序列化存入文件
			oout.close();
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		try {
			ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path));
			
				WRObject object = (WRObject)ois.readObject();//反序列化为一个对象
				object.display();
				ois.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
	}

}

 

package com.direct.io;

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

public class DataIO {
	/*
	 * 对象的成员数据假设均为基本数据类型,
	 * 只对对象的成员数据进行输入和输出操作,而不是整个对象的信息
	 * 此时,可使用DataInputStream  和   DataOutputStream
	 * 读取二进制文件
	 */
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public DataIO(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	
	public static void main(String[] args) {
		DataIO[] data = {new DataIO("小白", 18) , new DataIO("小黑", 19) , new DataIO("小黄", 21)};
		
		String path = "e:\study\file.txt";//路径
		try {
			/*
			 * DataOutputStream输出流
			 */
			DataOutputStream dous = new DataOutputStream(new FileOutputStream(path));
			for (DataIO dataIO : data) {
				try {
					//写入UTF字符串
					dous.writeUTF(dataIO.getName());
					//写入int数据
					dous.writeInt(dataIO.getAge());
					
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			try {
				dous.flush();//写入所有数据至目标文件
			} catch (IOException e) {
				e.printStackTrace();
			}
			try {
				dous.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
			/*
			 * DataInputStream输入流,
			 */
			DataInputStream dis = new DataInputStream(new FileInputStream(path));
			for (int i = 0; i < data.length; i++) {
				String name;
				try {
					name = dis.readUTF();//读UTF字符串
					int age;
					try {
						age = dis.readInt();//读int数据
						data[i] = new DataIO(name, age);//重复成对象存入对象数组
						
					} catch (IOException e) {
						e.printStackTrace();
					}
				
				} catch (IOException e) {
					e.printStackTrace();
				}
				
			}

			System.out.println("输出结果:");
			for (DataIO dataIO : data) {
				System.out.println(dataIO.getName()+"  "+dataIO.getAge());
			}
			
			try {
				dis.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		
	}
	
	

}

  

package com.direct.io;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class ReadFile {

	public static void main(String[] args) {
		/*
		 * FileInputStream 输入流  字节  读文件
		 */
		String path = "e:\study\file.txt";//路径
		File file = new File(path);

		if (!file.exists() || file.isDirectory()) {
			System.out.println("文件不存在或是目录");
		}
		
		try {
			FileInputStream fip = new FileInputStream(file);//path和file同样
			byte[] b = new byte[1024];
			int n=0;
			while((n=fip.read(b))!=-1){
				//System.out.println(n);
				System.out.println(new String(b,0,n));
			}
			fip.close();
			/*StringBuffer sb= new StringBuffer();							 
				while((fip.read(b)) != -1) {
					sb.append(new String(b));
					b = new byte[10];
				}
				fip.close();
				System.out.println(sb.toString());*/				
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
		/*
		 * FileReader输入流   字符  读文件
		 */
		String record = null;//内容
		int count = 0;//行
		try {
			FileReader fr = new FileReader(file);
			BufferedReader br = new BufferedReader(fr);//根据fr对象创建输入流缓冲区对象br	
				while( (record=br.readLine()) != null){
					count++;
					System.out.println("第"+count+"行:"+record);
				}
				br.close();
				fr.close();		
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
	}

}

  

 

package work.io;

import java.io.File;
import java.io.IOException;

public class ListFile {
	
	
	public static void main(String[] args) {
		
		File file =  new File("e:/io");
		try {
			new ListFile(). listFile(file);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}	
	//   把e盘的文件夹拷贝到d盘
	public void  listFile(File file) throws IOException{
		String path1 ="d:/copy";//目录
		String name= file.getPath().substring(2).replace('\', '/');   //      /io/name/file2.txt
		path1+=name;
		System.out.println(path1);   //    d:/copy/io/name/file2.txt
		File file2 = new File(path1);
		if (file.isDirectory()) {
			//System.out.println("---------->"+path1);
			file2.mkdirs();
			File[] arrFiles = null;
			arrFiles=  file.listFiles();
			for (int i = 0; i < arrFiles.length; i++) {
				listFile(arrFiles[i]);
			}
		}
		if (file.isFile()) {
			System.out.println(file.getPath());
			file2.createNewFile();
		}
		
	}


}

  

package work.io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Work23 {
	public static void main(String[] args) {
		try {
			File file = new File("e:/姓名/file2.txt");
			if (!file.exists()) {
				file.createNewFile();
			}
			FileWriter fw  = new FileWriter(file);
			BufferedWriter bw= new BufferedWriter(fw);
			String line1 = "2017年09月06日,今天我学习了文件流操作";
			String line2 = "我已经学会用FileWriter和BufferedWriter学入文件了";
			
			bw.write(line1);
			bw.newLine();
			bw.write(line2);
			
			bw.close();
			fw.close();
			
			FileReader fr = new FileReader(file);
			BufferedReader br  = new BufferedReader(fr);
			String record = "";
			System.out.println("文件中读取到的内容如下:");
			while ( (record=br.readLine())!=null) {
				System.out.println(record); 
			}
			
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
		
	}
}

  

原文地址:https://www.cnblogs.com/nn369/p/8024496.html