package com.swift.jinjie;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintStream; /*从键盘输入一个文件夹路径,利用打印流将该文件夹下的所有文件(包括子文件夹)复制到D盘下temp文件夹下。*/ public class PrintAllToFile { public static void main(String[] args) throws IOException { File srcDir=new File("d:/abc");
File destDir=new File("d:/temp");
printAllFile(srcDir,destDir);
System.out.println("包括子文件夹复制成功");
} private static void printAllFile(File srcDir, File destDir) throws IOException { if(!destDir.exists()) {
destDir.mkdirs();
}
File[] files=srcDir.listFiles();
for(File file:files) {
if(file.isDirectory()) {
File destDirNew=new File(destDir,file.getName());
printAllFile(file,destDirNew);
}else {
File destFile=new File(destDir,file.getName());
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));
PrintStream ps=new PrintStream(destFile);
int len;
byte[] buf=new byte[1024];
while((len=bis.read(buf))!=-1) {
ps.write(buf, 0, len);
} }
}
} }

不同编码文件复制到同一文件

package com.swift.jinjie;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter; /*d:/abc盘下有两个文本文件,分别为a.txt和b.txt,其中a.txt编码方式是gbk,而b.txt的编码方式是utf8。要求将使用转换流实现如下功能:
将a.txt和b.txt文件的内容复制到c.txt文件中,保证内容不乱码。*/ public class MergeTxt { public static void main(String[] args) throws IOException, FileNotFoundException { File file1=new File("d:/abc/a.txt");
File file2=new File("d:/abc/b.txt");
File destFile=new File("d:/abc/c.txt");
mergeFile(file1,file2,destFile);
} private static void mergeFile(File file1, File file2,File destFile) throws IOException { InputStreamReader isr1=new InputStreamReader(new FileInputStream(file1),"gbk");
InputStreamReader isr2=new InputStreamReader(new FileInputStream(file2),"utf-8");
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(destFile,true),"utf-8");
int len;
char[] buf=new char[1024];
while((len=isr1.read(buf))!=-1) {
osw.write(buf, 0, len);
osw.flush();
}
while((len=isr2.read(buf))!=-1) {
osw.write(buf, 0, len);
osw.flush();
}
osw.close();
isr1.close();
isr2.close();
System.out.println("文件复制成功");
} }

序列化流反序列化流

package com.swift.jinjie;

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.util.Scanner; import com.swift.baseKnowledge.Student; /*有学生类包含学号,姓名,省份证号,Java成绩,数学成绩,英语成绩等成员变量,提供构造方法和setter和getter方法。
要求:
* 学生信息及成绩保存到C盘的save.txt文件中
* 学生身份证号码不能保存到文件中。
* 程序运行时如果save.txt不存在,则
从键盘录入1个学生信息,信息录入格式如下:
***** 录入学生信息 *****
请输入学号:9527
请输入姓名:华安
请输入身份证号:2203919831234543
请输入Java成绩:90
请输入数学成绩:80
请输入英语成绩:88 根据录入的信息创建学生对象并将学生对象保存到C盘下的save.txt文件中。
* 如果程序运行时,save.txt文件已经存在,则显示学生信息。格式如下:
**** 学生基本信息 *****
学号 姓名 省份证号 Java成绩 数学成绩 英语成绩
9527 华安 null 90 80 88*/ public class Fanxuliehua { public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException { inputInfo();
} private static void inputInfo() throws FileNotFoundException, IOException, ClassNotFoundException { Scanner scan=new Scanner(System.in);
for(int i=0;i<1;i++) {
System.out.print("请输入学号:");
String id=scan.next();
Student student=new Student();
student.setId(id);
System.out.println("请输入姓名:");
String name=scan.next();
student.setName(name);
System.out.println("请输入身份证号:");
String uid=scan.next();
student.setUid(uid);
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("save.txt"));
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("save.txt"));
oos.writeObject(student);
Student stu=(Student)ois.readObject();
System.out.println(stu);
System.out.println("学号 姓名 身份证号 数学成绩 语文成绩 总分");
System.out.println(stu.getId()+" "+stu.getName()+" "+stu.getUid()+" "+stu.getShuxue()+" "); }
} }

java 打印流 递归复制子文件子文件夹 不同编码文件复制到同一文件中 序列化流反序列化流的更多相关文章

  1. C++ MFC 操作文件夹及属性(新建,删除[包含子文件[夹]],剪切,复制,重命名)

    源文件:http://pan.baidu.com/s/169HCL 运行mfc缺失的动态连接库:http://pan.baidu.com/s/17pGlT 截图: 不足之处仅供参考,哈哈.

  2. Windows批量修改文件夹及子文件夹下文件的扩展名

    实例:将 D:/backup 目录下所有后缀名为 “.zip” 的文件替换为 “.exe” 后缀 bat批处理: @echo off rem 不显示执行过程 D: rem 切换至指定盘符 cd D:/ ...

  3. java实现文件夹(包括其中的子文件夹、子文件)的复制——递归

    这是学校java课的一道实验题,题目如下:编程,根据指定的源和目标位置,完成指定文件或文件夹(包括其中的子文件夹.子文件)的复制. 以下是我的实现,使用了递归: package com.simon.m ...

  4. 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合

    package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import ...

  5. 在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM

    题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 m ...

  6. Java 遍历指定文件夹及子文件夹下的文件

    Java 遍历指定文件夹及子文件夹下的文件 /** * 遍历指定文件夹及子文件夹下的文件 * * @author testcs_dn * @date 2014年12月12日下午2:33:49 * @p ...

  7. JAVA中删除文件夹下及其子文件夹下的某类文件

    ##定时删除拜访图片 ##cron表达式 秒 分 时 天 月 ? ##每月1日整点执行 CRON1=0 0 0 1 * ? scheduled.enable1=false ##图片路径 filePat ...

  8. 通过ftp同步服务器文件:遍历文件夹所有文件(含子文件夹、进度条);简单http同步服务器文件实例

    该代码主要实现,指定ftp服务地址,遍历下载该地址下所有文件(含子文件夹下文件),并提供进度条显示:另外附带有通过http地址方式获取服务器文件的简单实例 废话不多说,直接上代码: 1.FTPHelp ...

  9. Android程序函数 将assets文件夹下的文件复制到手机的sd卡中(包括子文件夹)

    最近在做个功能是将asset文件夹下的所有文件(包括子文件)全部拷贝出来到指定目录下.所用的方法无非是用AssetManager.但是这里 有个问题是也要讲子文件夹和子文件都要拷贝出来.到网上Goog ...

随机推荐

  1. Unity 双击Esc或者返回退出游戏,有文字提示

    第一次点击Esc或者返回,显示提示文字"再次按下返回键退出游戏",在文字消失之前再次点击Esc或者返回,退出游戏. 此脚本挂在Text文字提示上: using UnityEngin ...

  2. ApplicationContextAware的作用

    ApplicationContextAware其实我们看到---Aware就知道是干嘛用的了,就是属性注入的, 但是这个ApplicationContextAware的不同地方在于,实现了这个接口的b ...

  3. 自写Jq动画载入插件

    在写网站的时候,有一些dom第一次进入屏幕时需要加一个动画进入效果,如下图 于是,自己就研究下,要是实现gif图中左图效果大致原理就是首先将dom放在他的左侧,并将他的透明度(opacity)设置为0 ...

  4. canvas实例(基础)

    JS实现五子棋大战:GitHub源码 知识点总结: 第一步.基础: //获取canvas var chess = document.getElementById('chess'); //获取上下文,创 ...

  5. <Android 基础(十二)> TextInputLayout,让输入框更有灵性

    介绍 Layout which wraps an {@link android.widget.EditText} (or descendant) to show a floating label wh ...

  6. LotusScript_批量更改数据库标识符(id)

    OA开发中经常要搭建测试环境,测试环境的数据库与原数据库不能有ID冲突现象,以防混淆.以下是一个批量修改数据库标识符的方法,其中,取得这些需要更改的数据库,需要导出源服务器上的数据库路径和名称,方法详 ...

  7. Android基础Activity篇——Intent返回数据给上一个活动

    1.如果活动B要将数据返回给活动A,那么需要以下三步: 1.1在活动A中使用startActivityForResult()方法启动活动B. 1.2在活动B中使用setResult()方法传回Iten ...

  8. Android内存监测工具使用

    用 Heap监测应用进程使用内存情况的步骤如下:1. 启动eclipse后,切换到DDMS透视图,并确认Devices视图.Heap视图都是打开的:2. 将手机通过USB链接至电脑,链接时需要确认手机 ...

  9. 【起航计划 018】2015 起航计划 Android APIDemo的魔鬼步伐 17 App->Alarm->Alarm Service

    Alarm Service和Alarm Controller 例子非常类似,只是Alarm Service是用来Schedule一个Service,而前面的例子是来Schedule一个Broadcas ...

  10. [原创]Debian9 安装配置MariaDB

    序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...