java对文件的基本操作

package cn.edu.fhj.day009.FileDemo;

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

public class FileDemo {

	public static void main(String[] args) throws IOException {

		// 将路径描述成File对象
		// File file = new File("d:/java_fd_test/fileDemo.txt");
		File file = new File(
				"F:/up_mouth_10/code_data/Data_Structure_And_Algorithm");
		boolean exists = file.exists(); //  如果路径所表示的文件或者文件夹存在,则返回true
		System.out.println(exists);

		// 判断该file是文件夹还是文件
		boolean directory = file.isDirectory();
		System.out.println(directory); // true

		boolean ifFile = file.isFile();
		System.out.println(ifFile); // false

		// 获取文件的绝对路径
		String absolutePath = file.getAbsolutePath();
		System.out.println(absolutePath);

		// 可以获取文件名或文件夹名
		String name2 = file.getName();
		System.out.println(name2);

		File file2 = new File(
				"F:/up_mouth_10/code_data/Data_Structure_And_Algorithm/Demo.txt");
		ifFile = file2.isFile(); // true
		System.out.println(ifFile);

		// 获取文件名
		String name = file2.getName();
		System.out.println(name);

		// 获取上一级目录的file对象
		File parentFile = file2.getParentFile();
		System.out.println(parentFile.getAbsolutePath());

		// 获取上一级目录的路径字符串
		String parent = file2.getParent();
		System.out.println(parent);

		// 获取文件长度 字节(8个bit-- 二进制位)
		long length = file2.length();
		System.out.println(length);

		System.out.println("------------------------");

		// 获取指定目录下的子节点的名称字符串
		String[] list = file.list();
		for (String s : list) {
			System.out.println(s);
		}

		System.out.println("------------------------");

		// 获取指定目录下的子节点的File描述对象
		File[] listFiles = file.listFiles();
		for (File f : listFiles) {
			System.out.println(f.getAbsolutePath());
		}

		System.out.println("------------------------");

		// 创建一个文件夹
		File f = new File(
				"F:/up_mouth_10/code_data/Data_Structure_And_Algorithm/xx/yy/zz");
		// boolean mkdir = f.mkdir(); // 不能创建多级目录
		// System.out.println(mkdir);

		// boolean mkdirs = f.mkdirs(); // 可以创建多级目录
		// System.out.println(mkdirs);
		//
		// // 创建文件
		File file3 = new File(
				"F:/up_mouth_10/code_data/Data_Structure_And_Algorithm/xx/yy/zz/cls.txt");
		boolean createNewFile = file3.createNewFile();
		System.out.println(createNewFile);

		// 重命名文件:其实可以把路径都给改了
		file3.renameTo(new File(
				"F:/up_mouth_10/code_data/Data_Structure_And_Algorithm/xx/yy/zz/cls001.txt"));

		// 删除文件
		boolean delete = file3.delete();
		System.out.println(delete);

	}

}

  

FileOutputStreamDemo文件的写

package cn.edu.fhj.day009.FileDemo;

import java.io.FileOutputStream;

public class FileOutputStreamDemo {

	public static void main(String[] args) throws Exception {

		// 覆盖的方式写数据
		FileOutputStream fos = new FileOutputStream(
				"F:/up_mouth_10/code_data/Data_Structure_And_Algorithm/Demo.txt");

		String s = "a你好";
		byte[] bytes = s.getBytes();
		fos.write(bytes);
		// 将字符串按指定编码集编码--》将信息转成二进制数 fos.write(bytes); // 这样写入的数据,会将文件中的原数据覆盖

		// 追加的方式写数据:如果要往一个文件中追加数据,则在FileOutputStream的构造参数中多传一个true
		FileOutputStream fos2 = new FileOutputStream(
				"F:/up_mouth_10/code_data/Data_Structure_And_Algorithm/Demo.txt",
				true);
		fos2.write(",sb".getBytes("UTF-8"));
		fos2.close();

		/**
		 * 第一句和后两句话写到文件中的数据完全相同
		 */
		fos.write("我用一生一世为你祈祷".getBytes()); // .getBytes()编码的过程
		fos.write((byte) 49);
		fos.write((byte) 51);

		/**
		 * 这两句话写到文件中的数据完全相同
		 */
		// fos.write((byte)13);
		// fos.write("
".getBytes());

		fos.close();

	}
}

  

FileInputStreamDemo的读

package cn.edu.fhj.day009.FileDemo;

import java.io.FileInputStream;
import java.io.InputStream;

public class FileInputStreamDemo {

	public static void main(String[] args) throws Exception {

		// 要读文件,首先要构造一个FileInputStream对象
		InputStream fis = new FileInputStream(
				"F:/up_mouth_10/code_data/Data_Structure_And_Algorithm/Demo.txt");

		/**
		 * 把数从文件中读取出来 如何读取字符
		 */
		// FileInputStream是一种字节流,是按照一个一个字节去文件中取数据的
		// 手动一个字节一个字节地读取
		/*
		 * int read = fis.read();
		 * 
		 * System.out.println(read);
		 * 
		 * read = fis.read(); System.out.println(read);
		 */

		/**
		 * 利用fis读到文件末尾后会返回-1的特性,来用循环进行读取
		 */
		int read = 0;
		/*
		 * while((read=fis.read())!=-1) { System.out.println(read); }
		 */

		System.out.println("-------------------");
		/**
		 * 如果我要读出数据(文本文件中的数据其实就是字符) 过程是:还是先读数,然后按照码表,将这个数转成字符
		 * 
		 */
		/*
		 * read = 0; while((read=fis.read())!=-1) { //
		 * char就代表一个英文字符,而且使用的是ascII码表规则 char c = (char)read;
		 * System.out.println(c); }
		 */

		/**
		 * 一次读取多个字节然后转成某种数据类型 read(buf)方法,一次读取buf长度个字节数据,并且读到的数据直接填入了buf数组中
		 */
		/*
		 * byte[] buf = new byte[8]; int num = fis.read(buf); // 返回的是真实读到的字节数量
		 * String string = new String(buf,2,5); // 利用二进制的byte数组来转成字符串
		 * System.out.println(string);
		 */

		/**
		 * 用while循环来反复读取
		 */
		int num = 0;
		byte[] buf = new byte[8];
		while ((num = fis.read(buf)) != -1) {
			System.out.println(new String(buf, 0, num));
		}

		// 关流
		fis.close();
	}

}

  

原文地址:https://www.cnblogs.com/cerofang/p/10273159.html