一.文件拆分器
//这是文件拆分器,
public class BufferRederDemo {
public static void main(String[] args) throws IOException {
InputStream in = new FileInputStream("D:"+File.separator+"test.txt");
BufferedReader bf = new BufferedReader(new InputStreamReader(in));
//缓冲区读取文 件,构造 方法中接收的是Reader字符流类对象,所以要将字节转成
//字符流,方法是InputStreamReader;
StringBuffer sb = new StringBuffer();
String str = null;
while((str = bf.readLine())!=null){
sb.append(str);//一行一行读取,读取一行,追加一行,直到把文件中的内容 全部取出来。
}
in.close();
bf.close();
System.out.println(sb.toString());
int lenth = sb.length()/9;
for(int i = 0;i <10;i++){
PrintStream ps = new PrintStream(new FileOutputStream("D:"+File.separator+"a"+i+".txt"));
if(i== 9){
ps.print(sb.substring(lenth*i, lenth*i+sb.length()%9));//第十份取出剩下所有的。
}else{
ps.print(sb.substring(lenth*i, lenth*(i+1)));//在第九份之前都是平均分配,分成十份,0-1是一份,1-2是一份。
}
ps.close();
}
}
}
二.序列化与反序列化:
import java.io.File;
public class ObjectOutput {
public static void main(String[] args) throws IOException, ClassNotFoundException {
//序列化
OutputStream out = new FileOutputStream("D:"+File.separator+"t.txt");
ObjectOutputStream ob = new ObjectOutputStream(out);
ob.writeObject(new Person("Yon", 12, 1));
ob.close();
//反序列化
ObjectInputStream oi = new ObjectInputStream(new FileInputStream("D:"+File.separator+"t.txt"));
Person p = (Person) oi.readObject();
oi.close();
System.out.printf("name:%s age:%d sex:%3.1f", p.getName(),p.getAge(),p.getSex());
}
}
三、PrintWriter 打印流
public class PrinytStreamDemo {
/**
* @param 打印流,文件没有乱码
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//字节打印流
File f = new File("D:"+File.separator+"t.txt");
PrintStream ps = new PrintStream(new FileOutputStream(f));
ps.print("Holle World");
ps.print("\r\nni hao!!");
ps.close();
//字符打印流
File f1 = new File("D:"+File.separator+"t1.txt");
PrintWriter pw = new PrintWriter(new FileWriter(f1));
pw.print("Holle World");
pw.print("\r\nni hao!!");
pw.close();
//格式输出
File f2 = new File("D:"+File.separator+"t2.txt");
PrintStream ps1 = new PrintStream(new FileOutputStream(f2));
String name = "wangchenghua";
int age = 21;
float grade = 92.5f;
ps1.printf("name:%s age:%d grade:%3.1f", name,age,grade);
ps1.close();
//操作对象 不对没有格式的对象进行操作,此代码只能输出对象的地址
File per = new File("D:"+File.separator+"per.txt");
PrintStream perst = new PrintStream(new FileOutputStream(per));
perst.print(new Person("Yon", 12, 1));
perst.close();
}
}
四、重定向打印流:
/*使用打印流,在文件输出上没有出现乱码*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
public class 重定向打印流 {
public static void main(String[] args) throws IOException {
PrintStream ps = new PrintStream(new FileOutputStream(new File("D:"+ File.separator + "test.txt"),true));
//ps.print(System.in);
System.setOut(ps);// 修改了输出位置
ps.println("Hello World!!!");
ps.println("Hello World!!!");
InputStream input = new FileInputStream(new File("D:" + File.separator + "test.txt"));
System.setIn(input);
byte b[] = new byte[1024];
int len = System.in.read(b); // 读取内容
String s = new String(b, 0, len);
input.close();
System.out.println(s);
char[] a ={'a','的','的','的'};
System.out.println(a.length);
}
}
五,利用递归操作文件操作类
public class 文件类操作运用递归 {
/**
* @param args
*/
public static void main(String[] args) {
/**
* 创建文件1
*/
File file = new File("D:\\text.txt");
try {
file.createNewFile();//创建一个文件
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**
* 创建文件2,区分平台
*/
File file1 = new File("D:"+File.separator+"t1.txt");
//try {
//file1.createNewFile();
//System.out.println(File.separator);
//} catch (IOException e) {
//// TODO Auto-generated catch block
//e.printStackTrace();
//}
/**
* 删除文件
*/
if(file1.exists()){//判断文件是否存在
file1.delete();
}else{
try {
file1.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 判断类型
*/
File file2 = new File("D:"+File.separator+"panduan.txt");
try {
file2.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(file2.isFile());//判断是否是文件
System.out.println(file2.isDirectory());//判断是否是文件夹
System.out.println(file2.length());//获得文件长度
System.out.println(file2.getPath());//get路径
System.out.println(file2);
System.out.println(file2.getParent());//获得文件上一级路径
file2.renameTo(new File("D:"+File.separator+"file2.txt"));
/**
* 创建文件夹
*/
File file3 = new File("D:"+File.separator+"makir1.txt");
file3.mkdir();//创建一个文件夹
System.out.println(file3.isDirectory());
/**
* 列出D:\AppServ所有文件--list()
*/
File file4 = new File("D:"+File.separator+"AppServ");
String[] f = file4.list();
for(String s : f){
System.out.println(s);
}
/**
* 列出D:\AppServ所有文件--list()
*/
File file5 = new File("D:"+File.separator+"AppServ");
File[] f1 = file4.listFiles();
for(File s : f1){
System.out.println(s.getPath());
}
/**
* 获得E:\work\PPT1目录下所有的文件1
*/
System.out.println("获得E:\\work\\PPT1目录下所有的文件:");
File demo1 = new File("E:\\work\\PPT1");
fun(demo1);
System.out.println("\n\n获得E:\\work\\PPT1目录下所有的文件:");
File demo2 = new File("E:\\work\\PPT1");
fun1(demo2);
}
public static void fun(File f){
if(f.isDirectory()){
File[] f1 = f.listFiles();
if(f1 != null){
for(File f2 : f1){
fun(f2);
}
}
}else{
System.out.println(f.getPath());
}
}
public static void fun1(File f){
if(f.isFile()){
System.out.println(f.getPath());
}else{
File[] f1 = f.listFiles();
if(f1 != null){
for(File f2 : f1){
fun(f2);
}
}
}
}
}