⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 软通公司培训的课件和习题里面有答案。。。
💻 TXT
📖 第 1 页 / 共 2 页
字号:
			return false;
		}
	}
	
	/**
	 * 删除目录(文件夹)以及目录下的文件,只删除文件夹
	 * @param dir	被删除目录的文件路径
	 * @return	目录删除成功返回true,否则返回false
	 */
6
/**
 * 多种方式写文件
 */
public class WriteToFile {
	/**
	 * 以字节为单位写文件。适合于写二进制文件。如图片等
	 * @param fileName	文件名
	 */
	public static void writeFileByBytes(String fileName){
		File file = new File(fileName);
		OutputStream out= null;
		try {
			// 打开文件输出流
			out = new FileOutputStream(file);
			String content = "文件内容:\n1,The First line;\n2,The second line.";
			byte[] bytes = content.getBytes();
			//写入文件
			out.write(bytes);
			System.out.println("写文件" + file.getAbsolutePath() + "成功!");
		} catch (IOException e){
			System.out.println("写文件" + file.getAbsolutePath() + "失败!");
			e.printStackTrace();
		} finally {
			if (out != null){
				try {
					//关闭输出文件流
					out.close();
				} catch (IOException e1) {
				}
			}
		}
	}
	/**
	 * 以字符为单位写文件。
	 * @param fileName	文件名
	 */
	public static void writeFileByChars(String fileName){
		File file = new File(fileName);
		Writer writer = null;
		try {
			//打开文件输出流
			writer = new OutputStreamWriter(new FileOutputStream(file));
			String content = "文件内容:\n1,The First line;\n2,The second line.";
			writer.write(content);
			System.out.println("写文件" + file.getAbsolutePath() + "成功!");
		} catch (IOException e){
			System.out.println("写文件" + file.getAbsolutePath() + "失败!");
			e.printStackTrace();
		} finally {
			if (writer != null){
				try {
					//关闭输出文件流
					writer.close();
				} catch (IOException e1) {
				}
			}
		}
	}
	/**
	 * 以行为单位写文件
	 * @param fileName	文件名
	 */
	public static void writeFileByLines(String fileName){
		File file = new File(fileName);
		PrintWriter writer = null;
		try {
			writer = new PrintWriter(new FileOutputStream(file));
			//写字符串
			writer.println("文件内容:");
			//能写各种基本类型数据
			writer.print(true);
			writer.print(155);
			//换行
			writer.println();
			//写入文件
			writer.flush();
			System.out.println("写文件" + file.getAbsolutePath() + "成功!");
		} catch (FileNotFoundException e) {
			System.out.println("写文件" + file.getAbsolutePath() + "失败!");
			e.printStackTrace();
		} finally {
			if (writer != null){
				//关闭输出文件流
				writer.close();
			}
		}
	}
	
	public static void main(String[] args) {
		String fileName = "c:/temp/tempfile0.txt";
		WriteToFile.writeFileByBytes(fileName);
		fileName = "c:/temp/tempfile1.txt";
		WriteToFile.writeFileByChars(fileName);
		fileName = "c:/temp/tempfile2.txt";
		WriteToFile.writeFileByLines(fileName);
	}
}
7
/**
 * 移动文件或目录
 */
public class MoveFileUtil {

	/**
	 * 移动单个文件,不覆盖已存在的目标文件
	 * @param srcFileName	待移动的原文件名	
	 * @param destFileName	目标文件名
	 * @return		文件移动成功返回true,否则返回false
	 */
	public static boolean moveFile(String srcFileName, String destFileName){
		//默认为不覆盖目标文件
		return MoveFileUtil.moveFile(srcFileName, destFileName, false);
	}
	/**
	 * 移动单个文件
	 * @param srcFileName	待移动的原文件名
	 * @param destFileName	目标文件名
	 * @param overlay		如果目标文件存在,是否覆盖
	 * @return	文件移动成功返回true,否则返回false
	 */
	public static boolean moveFile(String srcFileName, 
			String destFileName, boolean overlay){
		//判断原文件是否存在
		File srcFile = new File(srcFileName);
		if (!srcFile.exists()){
			System.out.println("移动文件失败:原文件" + srcFileName + "不存在!");
			return false;
		} else if (!srcFile.isFile()){
			System.out.println("移动文件失败:" + srcFileName + "不是一个文件!");
			return false;
		}
		File destFile = new File(destFileName);
		//如果目标文件存在
		if (destFile.exists()){
			//如果允许文件覆盖
			if (overlay){
				//删除已存在的目标文件,无论目标文件是目录还是单个文件
				System.out.println("目标文件已存在,准备删除它!");
				if(!DeleteFileUtil.delete(destFileName)){
					System.out.println("移动文件失败:删除目标文件" + destFileName + "失败!");
					return false;
				}
			} else {
				System.out.println("移动文件失败:目标文件" + destFileName + "已存在!");
				return false;
			}
		} else {
			if (!destFile.getParentFile().exists()){
				//如果目标文件所在的目录不存在,则创建目录
				System.out.println("目标文件所在目录不存在,准备创建它!");
				if(!destFile.getParentFile().mkdirs()){
					System.out.println("移动文件失败:创建目标文件所在的目录失败!" );
					return false;
				}
			}
		}
		//移动原文件至目标文件
		if (srcFile.renameTo(destFile)){
			System.out.println("移动单个文件" + srcFileName + "至" + destFileName + "成功!");
			return true;
		} else {
			System.out.println("移动单个文件" + srcFileName + "至" + destFileName  + "失败!");
			return true;
		}
	}
	
	/**
	 * 移动目录,不覆盖已存在的目标目录
	 * @param srcDirName	待移动的原目录名
	 * @param destDirName	目标目录名
	 * @return		目录移动成功返回true,否则返回false
	 */
	public static boolean moveDirectory(String srcDirName, String destDirName){
		//默认为不覆盖目标文件
		return MoveFileUtil.moveDirectory(srcDirName, destDirName, false);
	}
	
	/**
	 * 移动目录。
	 * @param srcDirName	待移动的原目录名
	 * @param destDirName	目标目录名
	 * @param overlay		如果目标目论存在,是否覆盖
	 * @return		目录移动成功返回true,否则返回false
	 */
	public static boolean moveDirectory(String srcDirName, 
			String destDirName, boolean overlay){
		//判断原目录是否存在
		File srcDir = new File(srcDirName);
		if (!srcDir.exists()){
			System.out.println("移动目录失败:原目录" + srcDirName + "不存在!");
			return false;
		} else if (!srcDir.isDirectory()){
			System.out.println("移动目录失败:" + srcDirName + "不是一个目录!");
			return false;
		}
		// 如果目标文件夹名不以文件分隔符结尾,自动添加文件分隔符
		if (!destDirName.endsWith(File.separator)){
			destDirName = destDirName + File.separator;
		}
		File destDir = new File(destDirName);
		//如果目标文件夹存在,
		if (destDir.exists()){
			if (overlay){
				//允许覆盖则删除已存在的目标目录
				System.out.println("目标目录已存在,准备删除它!");
				if (!DeleteFileUtil.delete(destDirName)){
					System.out.println("移动目录失败:删除目标目录" + destDirName + "失败!");
				}
			} else {
				System.out.println("移动目录失败:目标目录" + destDirName + "已存在!");
				return false;
			}
		} else {
			//创建目标目录
			System.out.println("目标目录不存在,准备创建它!");
			if(!destDir.mkdirs()){
				System.out.println("移动目录失败:创建目标目录失败!" );
				return false;
			}
		}
		boolean flag = true;
		//移动原目录下的文件和子目录到目标目录下
		File[] files = srcDir.listFiles();
		for (int i = 0; i < files.length; i++) {
			//移动子文件
			if (files[i].isFile()){
				flag = MoveFileUtil.moveFile(files[i].getAbsolutePath(), 
						destDirName + files[i].getName(), overlay);
				if (!flag){
					break;
				}
			}
			//移动子目录
			else if (files[i].isDirectory()){
				flag = MoveFileUtil.moveDirectory(files[i].getAbsolutePath(), 
						destDirName + files[i].getName(), overlay);
				if (!flag){
					break;
				}
			}
		}
		if (!flag){
			System.out.println("移动目录" + srcDirName + "至" + destDirName+ "失败!");
			return false;
		}
		// 删除原目录
		if (DeleteFileUtil.deleteDirectory(srcDirName)){
			System.out.println("移动目录" + srcDirName + "至" + destDirName+ "成功!");
			return true;
		} else {
			System.out.println("移动目录" + srcDirName + "至" + destDirName+ "失败!");
			return false;
		}
	}
	
	public static void main(String[] args) {
		//移动单个文件,如果目标文件存在,则替换
		String srcFileName = "C:/temp/temp.txt";
		String destFileName = "C:/tempbak/temp_bak.txt.";
		MoveFileUtil.moveFile(srcFileName, destFileName, true);
		System.out.println();
		//移动目录,如果目标目录存在,则不覆盖
		String srcDirName = "C:/temp";
		String destDirName = "C:/tempbak";
		MoveFileUtil.moveDirectory(srcDirName, destDirName);
	}
}
8
/**
 * 序列化和反序列化对象
 */
public class SerializeObject {
	//	一个内部类,用于被序列化和反序列化。
	//一定要实现Serializable才能够被序列化和反序列化。
	static class MyClass implements Serializable{
		//一般的实例变量会被序列化和反序列化
	    private int a,b;
	    //transient实例变量 不会 被序列化和反序列化
	    private transient int c; 
	    // 类变量 不会 被序列化和反序列化
	    private static int d;
	    public MyClass(){
	    }
	    public MyClass(int a, int b, int c, int d){
	        this.a = a;
	        this.b = b;
	        this.c = c;
	        MyClass.d = d;
	    }
	    public String toString(){
	    	return this.a + "  " + this.b + "  " + this.c + "  " + MyClass.d;
	    }
	}

	/**
	 * 序列化对象到文件
	 */
    public static void serialize(String fileName) throws Exception{
    	//创建一个对象输出流,将对象输出到文件
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(fileName));
        //序列化一个字符串对象到文件
        out.writeObject("Today:");
        //序列化当前日期对象到文件
        out.writeObject(new Date());
        //序列化一个MyClass对象
        MyClass my1 = new MyClass(5, 6, 7, 8);
        out.writeObject(my1);
        out.close();
    }
    /**
     * 从文件反序列化到对象
     */
    public static void deserialize(String fileName) throws Exception{
    	//创建一个对象输入流,从文件读取对象
        ObjectInputStream in = new ObjectInputStream(new FileInputStream(fileName));
        //注意读对象时必须按照序列化对象时的顺序读,否则会出错
        //读取字符串对象
        String today = (String)(in.readObject());
        System.out.println(today);
        //读日期对象
        Date date = (Date)(in.readObject());
        System.out.println(date.toString());
        //读MyClass对象,并调用它的add方法。
        MyClass my1 = (MyClass)(in.readObject());
        System.out.println(my1.toString());
        in.close();
        //当恢复对象的时候,对象中的所有域被自动的恢复。如果不希望某个域被序列化,可以在它前面
        //加上transient关键字,例如下面的代码:transient int noSer = 0;
        //类似的,如果类中的某个域为静态,它不会被序列化。
    }
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		String fileName = "c:/temp/MyClass.ser";
		SerializeObject.serialize(fileName);
		//注释掉第二行,只运行下面一行,将会发现输出不同
		SerializeObject.deserialize(fileName);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -