黑马程序员---Java基础--20天(IO流之三)
2012-06-23 21:01
453 查看
---------------------- android培训、java培训、期待与您交流! ----------------------
1.IO流(File概述)
2.IO流(File对象功能-创建和删除)
3.IO流(File对象功能-判断)
4.IO流(File对象功能-获取)
5.IO流(File对象功能-文件列表)
6.IO流(File对象功能-文件列表2)
7.IO流(列出目录下所有内容-递归)
8.IO流(列出目录下所有内容-带层次)
9.IO流(删除带内容的目录)
10.IO流(创建java文件列表)
11.IO流(Properties简述)
12.IO流(Properties存取)
13.IO流(Properties存取配置文件)
14.IO流(Properties练习)
15.IO流(PrintWriter)
16.IO流(合并流)
17.IO流(切割文件)
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
1.IO流(File概述)
2.IO流(File对象功能-创建和删除)
3.IO流(File对象功能-判断)
4.IO流(File对象功能-获取)
/* * File类常见方法: * 1.创建. * boolean createNewFile(): * 在制定位置创建文件,如果该文件已经存在,则不创建,返回false. * 和出输出流不一样,输出流对象已建立创建文件,而且文件已经存在,会覆盖. * boolean mkdir():创建文件夹. * boolean mkdir():创建多级文件夹. * * 2.删除. * boolean delete():删除失败返回false.如果文件正在被使用,则删除不了返回false. * void deleteOnExit():在程序退出是删除指定文件. * * 3.判断. * boolean exists():文件是否存在. * isFile(); * isHidden(); * isAbsolute(); * * 4.获取信息. * getName(); * getPath(); * getParent(); * * getAbsolutePath(); * long lastModified(); * long length(); * */ import java.io.*; import java.lang.reflect.Field; public class FileDemo { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub //method_1(); //method_2(); //method_3(); //method_4(); //method_5(); consMethod(); } public static void method_5() { File f1 = new File("E:\\java\\java0517\\day20\\file.txt"); File f2 = new File("E:\\java\\java0517\\day20\\file1_rename.txt"); sop("rename:"+f1.renameTo(f2)); } public static void method_4() { File f = new File("E:\\java\\java0517\\day20\\file1.txt"); sop("path:"+f.getPath()); sop("abspath:"+f.getAbsolutePath()); sop("parent:"+f.getParent());//该方法返回的是绝对路径的父目录. //如果获取的是相对路径,返回null. //如果相对路径中有上一层目录,那么该目录就是返回结果. } public static void method_3() throws IOException { File f = new File("E:\\java\\java0517\\day20\\file2.txt"); f.createNewFile(); f.mkdir(); //记住在判断文件对象是否是文件或者目的时,必须要先判断该文件对象封装的 //内容是否存在. //通过exists判断 sop("dir:"+f.isDirectory()); sop("file:"+f.isFile()); sop(f.isAbsolute()); } public static void method_2() { File f = new File("E:\\java\\java0517\\day20\\file.txt"); sop("exists:"+f.exists()); //创建文件夹 File dir = new File("E:\\java\\java0517\\day20\\abc\\kkk\\a\\a\\dd\\ee\\qq\\aaa"); sop("mkdir:"+dir.mkdirs()); } public static void method_1() throws IOException { File f = new File("E:\\java\\java0517\\day20\\file.txt"); sop("create:"+f.createNewFile()); //sop("delete:"+f.delete()); } public static void consMethod() { //将a.txt封装成File对象.可以将已有的和未出现的文件或者文件夹封装成对象. File f1 = new File("E:\\java\\java0517\\day20\\a.txt"); File f2 = new File("E:\\java\\java0517\\day20","b.txt"); File d = new File("E:\\java\\java0517\\day20"); File f3 = new File(d,"c.txt"); sop("f1:"+f1); sop("f2:"+f2); sop("f3:"+f3); } public static void sop(Object obj) { System.out.println(obj); } }
5.IO流(File对象功能-文件列表)
6.IO流(File对象功能-文件列表2)
import java.io.*; public class FileDemo2 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //listDemo_2(); File dir = new File("e:\\"); File[] files = dir.listFiles(); for(File f : files) { System.out.println(f.getName()+";;"+f.length()); } } public static void listDemo_2() { File dir = new File("e:\\java"); String[] arr = dir.list(new FilenameFilter() { public boolean accept(File dir, String name) { // TODO Auto-generated method stub // System.out.println("dir:"+dir+"...name"+name); // // if(name.endsWith(".txt")) // { // return true; // } // else // return false; return name.endsWith(".txt"); } }); System.out.println("len"+arr.length); for(String name : arr) { System.out.println(name); } } public static void listDemo() { File f = new File("E:\\"); //调用list方法的file对象必须是封装了一个目录.该目录还必须存在 String[] lists = f.list(); for(String list : lists) { System.out.println(list); } } public static void listRootDemo() { File[] files = File.listRoots(); for(File f : files) { System.out.println(f); } } }
7.IO流(列出目录下所有内容-递归)
8.IO流(列出目录下所有内容-带层次)
/* * 列出指定目录下文件或者文件夹,包含目录中的内容. * 也就是列出指定目录下所有内容. * * 因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可. * 在列出过程中出现的还是目录的话,还可以再次调用本功能. * 也就是函数自身调用自身. * 这种变线行驶,或者变成手法,成为递归. * * 递归要注意: * 1.限定条件. * 2.要注意递归的次数.尽量避免内存溢出. * */ import java.io.*; public class FileDemo3 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //File dir = new File("e:\\java\\java0517"); //showDir(dir,0); toBin(6);//求二进制 int n = getSum(8000); System.out.println("n="+n); } public static String getLevel(int level) { StringBuilder sb = new StringBuilder(); sb.append("|--"); for(int x=0; x<level; x++) { //sb.append("|--"); sb.insert(0,"| "); } return sb.toString(); } public static void showDir(File dir,int level) { System.out.println(getLevel(level)+dir.getName()); level++; File[] files = dir.listFiles(); for(int x=0; x<files.length;x++) { if(files[x].isDirectory()) showDir(files[x],level); else System.out.println(getLevel(level)+files[x]); } } public static int getSum(int n) { if(n==1) return 1; return n+getSum(n-1); } public static void toBin(int num) { if(num>0) { toBin(num/2); System.out.println(num%2); } } }
9.IO流(删除带内容的目录)
/* * 删除一个带内容的目录. * 删除原理: * 在windows中,删除目录从里面往外删除. * * 既然是从里往外删除,就需要用到递归. * */ import java.io.*; public class RemoveDir { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File dir = new File("e:\\test"); removeDir(dir); } public static void removeDir(File dir) { File[] files = dir.listFiles(); for(int x=0; x<files.length;x++) { if(files[x].isDirectory()) removeDir(files[x]); else System.out.println(files[x].toString()+"-file-:"+files[x].delete()); } System.out.println(dir+"::dir::"+dir.delete()); } }
10.IO流(创建java文件列表)
/* * 练习:将制定目录下的java文件的绝对路径,存储到一个文本文件中. * 建立一个java文件列表 * * 思路: * 1.对指定的目录进行递归. * 2.获取递归过程所有的java文件的路径. * 3.将这些路径存储到集合中去. * 4.将集合中的数据写入到一个文件中 * */ import java.io.*; import java.util.*; public class JavaFileList { /** * @param args */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub File dir = new File("e:\\java\\java0517"); List<File> list = new ArrayList<File>(); fileToList(dir,list); System.out.println(list.size()); File file = new File(dir,"javalist.txt"); writeToFile(list,file.toString()); } public static void writeToFile( List<File> list,String javaListFile)throws IOException { // TODO Auto-generated method stub BufferedWriter bufw = null; try { bufw = new BufferedWriter(new FileWriter(javaListFile)); for(File f : list) { String path = f.getAbsolutePath(); bufw.write(path); bufw.newLine(); bufw.flush(); } } catch (IOException e) { // TODO Auto-generated catch block throw e; }finally { if(bufw!=null) bufw.close(); } } public static void fileToList(File dir, List<File> list) { // TODO Auto-generated method stub File[] files = dir.listFiles(); for(File file : files) { if(file.isDirectory()) fileToList(file, list); else { if(file.getName().endsWith(".java")) list.add(file); } } } }
11.IO流(Properties简述)
12.IO流(Properties存取)
13.IO流(Properties存取配置文件)
/* * Properties是HashTable的子类. * 也就是说它具备集合的特点.而且它里面存储的键值对都是字符串. * * 是集合中和IO技术中相结合的集合容器. * * 该对象的特点:可以用于键值对形式的配置文件. * * 那么加载数据时,需要数据有固定格式:键=值. * * 练习:限制程序运行次数. * 当运行次数超过5次时,给出请您注册的提示. * */ import java.io.*; import java.util.*; public class PropertiesDemo { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub // method_1(); loadDemo(); } public static void loadDemo() throws IOException { Properties prop = new Properties(); FileInputStream fis = new FileInputStream("E:\\java\\java0517\\day20\\info.txt"); //将流中的数据加载进集合 prop.load(fis); prop.setProperty("wangwu", "39"); FileOutputStream fos = new FileOutputStream("E:\\java\\java0517\\day20\\info.txt"); prop.store(fos, "haha"); prop.list(System.out); fos.close(); fis.close(); } //演示:如若将流中的数据存储到集合中. //1.用一个流和info.txt文件关联。 //2.读取一行数据,将该行数据用"="进行切割。 //3.等号左边作为键,右边作为值。存入到Properties集合中即可。 public static void method_1() throws IOException { BufferedReader bufr = new BufferedReader(new FileReader("E:\\java\\java0517\\day20\\info.txt")); String line = null; Properties prop = new Properties(); while((line=bufr.readLine())!=null) { String[] arr = line.split("="); //System.out.println(arr[0]+";;;"+arr[1]); prop.setProperty(arr[0], arr[1]); } bufr.close(); System.out.println(prop); } //设置和获取元素。 public static void setAndGet() { Properties prop = new Properties(); prop.setProperty("zhangsan","30"); prop.setProperty("lisi","39"); // System.out.println(prop); String value = prop.getProperty("lisi"); //System.out.println(value); prop.setProperty("lisi",89+""); Set<String> names = prop.stringPropertyNames(); for(String s : names) { System.out.println(s+":"+prop.getProperty(s)); } } }
14.IO流(Properties练习)
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; /* * 用于记录应用程序运行次数. * 如果使用次数已到,那么给出注册提示. * * 很容易想到的是:计数器. * 可是该计数器定义在程序中,随着程序的运行而在内存中存在,并进行自增. * 可是随着该应用程序的的退出,该计数器也在内存中消失了. * * 下一次再启动该程序,又重新开始从0计数. * 这样不是我们想要的. * * 程序即使结束,该计数器的值也存在. * 下次程序启动会先加载该计数器的值并加1后重新存储起来. * * 所以要建立一个配置文件.用于记录该软件的使用次数. * * 该配置文件使用键值对的形式. * 这样便于阅读数据,并操作数据. * * 键值对数据时map集合. * 数据是以文件形式存储,使用io技术. * 那么map+io -->properties * * 配置文件可以实现应用程序数据的共享. * */ public class RunCount { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub Properties prop = new Properties(); File file = new File("count.ini"); if(!file.exists()) file.createNewFile(); FileInputStream fis = new FileInputStream(file); prop.load(fis); int count = 0; String value = prop.getProperty("time"); if(value!=null) { count = Integer.parseInt(value); if(count>=5) { System.out.println("不让用了"); return; } } count++; prop.setProperty("time", count+""); FileOutputStream fos = new FileOutputStream(file); prop.store(fos, ""); fos.close(); fis.close(); } }
15.IO流(PrintWriter)
/* * 打印流: * 该打印流提供了打印方法,可以将各种数据类型的数据都原样打印. * * 字节打印流: * PrintStream * 构造函数可以接收的参数类型. * 1.file对象.File * 2.字符串路径.String * 3.字节输出流.OutputStream. * * 字符打印流: * PrintWriter * 构造函数可以接收的参数类型. * 1.file对象.File * 2.字符串路径.String * 3.字节输出流.OutputStream * 4.字符输出流.Writer * */ import java.io.*; public class PrintStreamDemo { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); PrintWriter out = new PrintWriter(new FileWriter("a.txt")); String line = null; while((line=bufr.readLine())!=null) { if("over".equals(line)) break; out.println(line.toUpperCase()); } out.close(); bufr.close(); } }
16.IO流(合并流)
import java.io.*; import java.util.*; public class SequenceDemo { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub Vector<FileInputStream> v = new Vector<FileInputStream>(); v.add(new FileInputStream("c:\\1.txt")); v.add(new FileInputStream("c:\\2.txt")); v.add(new FileInputStream("c:\\3.txt")); Enumeration<FileInputStream> en = v.elements(); SequenceInputStream sis = new SequenceInputStream(en); FileOutputStream fos = new FileOutputStream("c:\\4.txt"); byte[] buf = new byte[1024]; int len = 0; while((len=sis.read(buf))!=-1) { fos.write(buf,0,len); } fos.close(); sis.close(); } }
17.IO流(切割文件)
import java.io.*; import java.util.*; public class SplitFile { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO Auto-generated method stub merge(); } public static void merge() throws IOException { ArrayList<FileInputStream> al = new ArrayList<FileInputStream>(); for(int x=1; x<=3; x++) { al.add(new FileInputStream("c:\\splitfiles\\"+x+".part")); } final Iterator<FileInputStream> it = al.iterator(); Enumeration<FileInputStream> en = new Enumeration<FileInputStream>() { public FileInputStream nextElement() { // TODO Auto-generated method stub return it.next(); } public boolean hasMoreElements() { // TODO Auto-generated method stub return it.hasNext(); } }; SequenceInputStream sis = new SequenceInputStream(en); FileOutputStream fos = new FileOutputStream("c:\\splitfiles\\0.png"); byte[] buf = new byte[400]; int len = 0; while((len=sis.read(buf))!=-1) { fos.write(buf,0,len); } fos.close(); sis.close(); } public static void splitFile() throws IOException { FileInputStream fis = new FileInputStream("c:\\a.png"); FileOutputStream fos = null; byte[] buf = new byte[400]; int len = 0; int count = 1; while((len=fis.read(buf))!=-1) { fos = new FileOutputStream("c:\\splitfiles\\"+(count++)+".part"); fos.write(buf,0,len); fos.close(); } fis.close(); } }
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
相关文章推荐
- 黑马程序员-----Java基础-----IO流-1
- 黑马程序员--Java基础学习(IO流及字符编码)第二十一天
- 黑马程序员-----Java基础-----IO流-2
- 黑马程序员_java基础之IO流(一)
- 黑马程序员_Java基础_IO流(字符流缓冲区和字节流相关操作以及相关操作技巧)
- 黑马程序员_java基础学习笔记07_IO流
- 黑马程序员_毕向东JAVA基础_IO流(二)
- 黑马程序员——Java基础--------IO流(二)
- 黑马程序员——Java基础——IO流笔记(FileInputStream和FileOutputStream使用示例)
- 黑马程序员——java基础(IO流其它类)
- 黑马程序员——Java基础---io流
- 黑马程序员——JAVA基础——IO流
- 黑马程序员——Java基础---IO流概述、字符流、字节流、流操作规律
- 黑马程序员——Java基础—IO流(一)
- 黑马程序员——Java基础—IO流(二)
- 黑马程序员——JAVA基础----IO流(一)
- 黑马程序员——Java基础---IO流(字符流)
- 黑马程序员——Java基础——IO流(上)之字符流
- 黑马程序员——java基础知识篇——>IO流
- 黑马程序员——Java基础->IO流(下)