java io

    技术2022-05-20  56

    转自: http://hi.baidu.com/myviewpoint/blog/item/18a0c7fb971e27126c22ebd3.html

    一、Java IO学习基础之读写文本文件

    Java的IO操作都是基于流进行操作的,为了提高读写效率一般需要进行缓冲。    简单的示例程序如下:

    /** * 读出1.txt中的内容,写入2.txt中 * */ import java.io.*; public class ReadWriteFile{ public static void main(String[] args){ try{ File read = new File("c://1.txt"); File write = new File("c://2.txt"); BufferedReader br = new BufferedReader( new FileReader(read)); BufferedWriter bw = new BufferedWriter( new FileWriter(write)); String temp = null; temp = br.readLine(); while(temp != null){ //写文件 bw.write(temp + "/r/n"); //只适用Windows系统 //继续读文件 temp = br.readLine(); } bw.close(); br.close(); }catch(FileNotFoundException e){ //文件未找到 System.out.println (e); }catch(IOException e){ System.out.println (e); } } }

    以上是一个比较简单的基础示例。本文上下两部分都是从网上摘抄,合并在一起,方便下自己以后查找。

     

     

     

    二、Java IO学习笔记+代码

    文件对象的生成和文件的创建

    /* * ProcessFileName.java * * Created on 2006年8月22日, 下午3:10 * * 文件对象的生成和文件的创建 */ package study.iostudy; import java.io.*; public class GenerateFile { public static void main(String[] args) { File dirObject = new File("d://mydir"); File fileObject1 = new File("oneFirst.txt"); File fileObject2 = new File("d://mydir", "firstFile.txt"); System.out.println(fileObject2); try { dirObject.mkdir(); }catch(SecurityException e) { e.printStackTrace(); } try { fileObject2.createNewFile(); fileObject1.createNewFile(); }catch(IOException e) { e.printStackTrace(); } } }  

     

     

    文件名的处理

    /* * ProcessFileName.java * * Created on 2006年8月22日, 下午3:29 * * 文件名的处理 */ package study.iostudy; import java.io.*; /* * 文件名的处理 * String getName(); 获得文件的名称,不包含文件所在的路径。 * String getPath(); 获得文件的路径。 * String getAbsolutePath(); 获得文件的绝对路径。 * String getParent(); 获得文件的上一级目录的名称。 * String renameTo(File newName); 按参数中给定的完整路径更改当前的文件名。 * int compareTo(File pathName); 按照字典顺序比较两个文件对象的路径。 * boolean isAbsolute(); 测试文件对象的路径是不是绝对路径。 */ public class ProcesserFileName { public static void main(String[] args) { File fileObject1 = new File("d://mydir//firstFile.txt"); File fileObject2 = new File("d://firstFile.txt"); boolean pathAbsolute = fileObject1.isAbsolute(); System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * "); System.out.println("There are some information of fileObject1's file name:"); System.out.println("fileObject1: " + fileObject1); System.out.println("fileObject2: " + fileObject2); System.out.println("file name: " + fileObject1.getName()); System.out.println("file path: " + fileObject1.getPath()); System.out.println("file absolute path: " + fileObject1.getAbsolutePath()); System.out.println("file's parent directory: " + fileObject1.getParent()); System.out.println("file's absoulte path: " + pathAbsolute); int sameName = fileObject1.compareTo(fileObject2); System.out.println("fileObject1 compare to fileObject2: " + sameName); fileObject1.renameTo(fileObject2); System.out.println("file's new name: " + fileObject1.getName()); } }   

     

    测试和设置文件属性

    /* * SetterFileAttribute.java * * Created on 2006年8月22日, 下午3:51 * * 测试和设置文件属性 */ package study.iostudy; import java.io.*; public class SetterFileAttribute { /* * File类中提供的有关文件属性测试方面的方法有以下几种: * boolean exists(); 测试当前文件对象指示的文件是否存在。 * boolean isFile(); 测试当前文件对象是不是文件。 * boolean isDirectory(); 测试当前文件对象是不是目录。 * boolean canRead(); 测试当前文件对象是否可读。 * boolean canWrite(); 测试当前文件对象是否可写。 * boolean setReadOnly(); 将当前文件对象设置为只读。 * long length(); 获得当前文件对象的长度。 */ public static void main(String[] args) { File dirObject = new File("d://mydir"); File fileObject = new File("d://mydir//firstFile.txt"); try { dirObject.mkdir(); fileObject.createNewFile(); }catch(IOException e) { e.printStackTrace(); } System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * "); System.out.println("there are some information about property of file object:"); System.out.println("file object : " + fileObject); System.out.println("file exist? " + fileObject.exists()); System.out.println("Is a file? " + fileObject.isFile()); System.out.println("Is a directory?" + fileObject.isDirectory()); System.out.println("Can read this file? " + fileObject.canRead()); System.out.println("Can write this fie? " + fileObject.canWrite()); long fileLen = fileObject.length(); System.out.println("file length: " +fileLen); boolean fileRead = fileObject.setReadOnly(); System.out.println(fileRead); System.out.println("Can read this file? " + fileObject.canRead()); System.out.println("Can write this fie? " + fileObject.canWrite()); System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * "); } }

     

    文件操作方法

    /* * FileOperation.java * * Created on 2006年8月22日, 下午4:25 * * 文件操作方法 */ package study.iostudy; import java.io.*; /* * 有关文件操作方面的方法有如下几种: * boolean createNewFile(); 根据当前的文件对象创建一个新的文件。 * boolean mkdir(); 根据当前的文件对象生成一目录,也就是指定路径下的文件夹。 * boolean mkdirs(); 也是根据当前的文件对象生成一个目录, * 不同的地方在于该方法即使创建目录失败, * 也会成功参数中指定的所有父目录。 * boolean delete(); 删除当前的文件。 * void deleteOnExit(); 当前Java虚拟机终止时删除当前的文件。 * String list(); 列出当前目录下的文件。 */ public class FileOperation { public static void main(String[] args) { File fileObject = new File("d://mydir", "firstFile.txt"); File dirObject1 = new File("d://mydir//01"); File dirObject2 = new File("d://mydir//02"); File dirObject3 = new File("d://mydir"); System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); System.out.println("file object: " + fileObject); System.out.println("dir object 1: " + dirObject1); System.out.println("dir object 2" + dirObject2); try { dirObject1.mkdir(); dirObject2.mkdirs(); }catch(SecurityException e) { e.printStackTrace(); } try { fileObject.createNewFile(); }catch(IOException e) { e.printStackTrace(); } String[] files = dirObject2.list(); for (int i = 0; i < files.length; i++) { System.out.println("list files in myhdir: " + files[i]); } System.out.println("dir object 1 exist? " + dirObject1.exists()); System.out.println("dir object 2 exist? " + dirObject2.exists()); boolean dir1Del = dirObject1.delete(); dirObject2.deleteOnExit(); System.out.println("dir object 1 exist? " + dirObject1.exists()); System.out.println("dir object 2 exist? " + dirObject2.exists()); } }

     

     

    找出一个目录下所有的文件

     

    /* * SearchFile.java * * Created on 2006年8月22日, 下午4:45 * * 找出一个目录下所有的文件 */ package study.iostudy; import java.io.*; public class SearchFile { public static void main(String[] args) { File dirObject = new File("D://aa"); Filter1 filterObj1 = new Filter1("HTML"); Filter2 filterObj2 = new Filter2("Applet"); System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); System.out.println("list HTML files in directory: " + dirObject); String[] filesObj1 = dirObject.list(filterObj1); for (int i = 0; i < filesObj1.length; i++) { File fileObject = new File(dirObject, filesObj1[i]); System.out.println(((fileObject.isFile()) ? "HTML file: " : "sub directory: ") + fileObject); } System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); String[] filesObj2 = dirObject.list(filterObj2); for (int i = 0; i < filesObj2.length; i++) { File fileObject = new File(dirObject, filesObj2[i]); System.out.println(((fileObject.isFile()) ? "htm file: " : "sub directory: ") + fileObject); } } } class Filter1 implements FilenameFilter { String fileExtent; Filter1(String extentObj) { fileExtent = extentObj; } public boolean accept(File dir, String name) { return name.endsWith("." + fileExtent); } } class Filter2 implements FilenameFilter { String fileName; Filter2(String fileName) { this.fileName = fileName; } public boolean accept(File dir, String name) { return name.startsWith(fileName + "."); } }

     

    文件内容的拷贝(任意文件)

     

    /* * CopyFileContent.java * * Created on 2006年8月22日, 下午5:37 * * 文件内容的拷贝(任意文件) */ package study.iostudy; import java.io.*; public class CopyFileContent { static void copyContent(FileInputStream inObj, FileOutputStream outObj) { int copyLen; byte[] copyBuf = new byte[1024]; try { while ((copyLen = inObj.read(copyBuf, 0, 1024)) != -1) { String copyStr = new String(copyBuf); System.out.println(copyStr); outObj.write(copyBuf, 0, copyLen); } }catch(IOException e) { System.out.println("error: " + e); } } public static void main(String[] args) { String secondFileName = "d://mydir//secondFile.wmv"; String thirdFileName = "d://mydir//thirdFile.wmv"; File fileObject = new File(thirdFileName); FileInputStream inStream; FileOutputStream outStream; try { fileObject.createNewFile(); inStream = new FileInputStream(secondFileName); outStream = new FileOutputStream(thirdFileName); copyContent(inStream, outStream); }catch(FileNotFoundException e) { e.printStackTrace(); }catch(IOException e) { e.printStackTrace(); } } }


    最新回复(0)