`
gstarwd
  • 浏览: 1525052 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java文件操作总结4

阅读更多
输入输出流 
在Java中,我们把能够读取一个字节序列的对象称作一个输入流;而我们把够写一个字节序列称作一个输出流。它们分别由抽象类 
InputStream和OutputStream类表示。因为面向字节的流不方便用来处理存储为Unicode(每个字符使用两个字节)的信息。所以Java 
引入了用来处理Unicode字符的类层次,这些类派生自抽象类Reader和Writer,它们用于读写双字节的Unicode字符,而不是单字节字符。 
Java.io包简介 
JDK标准帮助文档是这样解释Java.io包的,通过数据流、序列和文件系统为系统提供输入输出。 
InputStream类和OutputStream类 
InputStream类是所有输入数据流的父类,它是一个抽象类,定义了所有输入数据流都具有的共通特性。 
java.io.InputStream的方法如下: 
public abstract read()throws IOException 
读取一个字节并返回该字节,如果到输入源的末则返回-1。一个具体的输入流类需要重载此方法,以提供 有用的功能。例如:在FileInputStream类中,该方法从一个文件读取一个字节。 
public int read(byte[] b)throws IOException 
把数据读入到一个字节数据中,并返回实际读取的字节数目。如果遇到流末 则返回-1,该方法最多读取b.length个字节。 
public abstract int read(byte[] b,int off,int len)throws IOException 
把数据读入到一个字节数组中并返回实际读取的字节数目。如果遇到流的末尾则的返回-1。 其中参数off表示第一个字节在b中的位置,len表示读取的最大字节数。 
public long skip(long n)throws IOException 
略过N个字节不读取,会返回实际略过的字节数目。因为数据流中剩下的数据可能不到N 个字节那么多,所以此时返回值会小于N。 
public int available()throws IOException 
read方法(包括后面要讲的OutputStream类的Write方法)都能够阴塞一个线程,直到字节被 实际读取或写入。这意味着如果一个流不能立即被读或被写 
/* 
* Created on 2005-3-10 
* To change the template for this generated file go to 
* Window>Preferences>Java>Code Generation>Code and Comments 
*/ 

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.io.FileInputStream;; 
/** 
* @author zhangqinglin 
* To change the template for this generated type comment go to 
* Window>Preferences>Java>Code Generation>Code and Comments 
*/ 
public class Files 
{ 
public static void main(String[] args) throws IOException 
{ 
Files f = new Files(); 
// System.out.println(f.readFile("f:\\LinkFile.java")); 
f.fileIsNull("D:\\java\\","ejb"); 
//f.readLineFile("D:\\java\\","TestFile.txt"); 
// System.out.println(f.fileIsNull("f:\\","122.txt")); 
//f.readFolderByFile("F:\\Login"); //不区分大小写
// System.out.println(f.createAndDeleteFolder("ss","f:\\")); 
// System.out.println(f.createAndDeleteFile("f:\\ss\\","TestFile.dat")); 
//f.createAndDeleteFolder("1","D:\\java\\");
String[] ss = new String[50]; //定义对象数组
for(int i=0;i<ss.length;i++) 
{ 
ss = "信息技术和互联网(计算机软硬件,通讯) "+i; 
} 
f.writeFile("D:\\java\\","TestFile.txt",ss); 

} 
/** 
* 文件的写入 
* @param filePath(文件路径) 
* @param fileName(文件名) 
* @param args[] 
* @throws IOException 
*/ 
public void writeFile(String filePath,String fileName,String[] args) throws IOException 
{ 
FileWriter fw = new FileWriter(filePath+fileName); 
PrintWriter out=new PrintWriter(fw); 
for(int i=0;i<args.length;i++) 
{ 
out.write(args); 
out.println(); 
//out.flush(); 
}
System.out.println("写入成功!"); 
fw.close(); 
out.close(); 
} 
/** 
* 文件的写入 
* @param filePath(文件路径) 
* @param fileName(文件名) 
* @param args 
* @throws IOException 
*/ 
public void writeFile(String filePath,String fileName,String args) throws IOException 
{ 
FileWriter fw = new FileWriter(filePath+fileName); 
fw.write(args); 
fw.close(); 
} 
/** 
* 创建与删除文件 
* @param filePath 
* @param fileName 
* @return 创建成功返回true 
* @throws IOException 
*/ 
public boolean createAndDeleteFile(String filePath,String fileName) throws IOException 
{ 
boolean result = false; 
File file = new File(filePath,fileName); 
if(file.exists()){
if(file.isFile()) 
{ 
file.delete(); 
result = true; 
System.out.println("文件已经删除!"); 
} 
else 
{
   System.out.println("对不起,该路径为目录!"); 
   
}
}
else 
{ 
file.createNewFile(); //jdk5.0的新方法
result = true; 
System.out.println("文件已经创建!"); 
} 
return result; 
} 
/** 
* 创建和删除目录 
* @param folderName 
* @param filePath 
* @return 删除成功返回true 
*/ 
public boolean createAndDeleteFolder(String folderName,String filePath) 
{ 
boolean result = false; 
try 
{ 
File file = new File(filePath+folderName); 
if(file.exists()) 
{ 
if(file.isDirectory()){
file.delete(); 
System.out.println("目录已经存在,已删除!"); 
result = true; 
}
else{
System.out.println("对不起,该路径为文件!"); 
}
} 
else 
{ 
file.mkdir(); 
System.out.println("目录不存在,已经建立!"); 
result = true; 
} 
} 
catch(Exception ex) 
{ 
result = false; 
System.out.println("CreateAndDeleteFolder is error:"+ex); 
} 
return result; 
} 
/** 
* 输出目录中的所有文件及目录名字 
* @param filePath 
*/ 
public void readFolderByFile(String filePath)
{ 
File file = new File(filePath); 
File[] tempFile = file.listFiles(); 
for(int i = 0;i<tempFile.length;i++) 
{ 
if(tempFile.isFile()) 
{ 
System.out.println("File : "+tempFile.getName()); 
} 
if(tempFile.isDirectory()) 
{ 
System.out.println("Directory : "+tempFile.getName()); 
} 
} 
} 
/** 
* 检查文件中是否为一个空 
* @param filePath 
* @param fileName 
* @return 为空返回true 
* @throws IOException 
*/ 
public boolean fileIsNull(String filePath,String fileName) throws IOException 
{ 
boolean result = false; 
FileReader fr = new FileReader(filePath+fileName); 
if(fr.read() == -1) 
{ 
result = true; 
System.out.println(fileName+" 文件中没有数据!"); 
} 
else 
{ 
System.out.println(fileName+" 文件中有数据!"); 
} 
fr.close(); 
return result; 
} 
/** 
* 读取文件中的所有内容 
* @param filePath 
* @param fileName 
* @throws IOException 
*/ 
public void readAllFile(String filePath,String fileName) throws IOException 
{ 
FileReader fr = new FileReader(filePath+fileName); 
//PrintWriter pr=new PrintWriter(fr);
//pr.print
int count = fr.read(); 
while(count != -1) 
{ 
System.out.print((char)count); 
count = fr.read(); 
//System.out.println();
if(count == 13) 
{ 
fr.skip(1); 
System.out.print("跳过!"); 
}
} 
System.out.println(); 
fr.close(); 
} 
/** 
* 一行一行的读取文件中的数据 
* @param filePath 
* @param fileName 
* @throws IOException 
*/ 
public void readLineFile(String filePath,String fileName) throws IOException 
{ 
FileReader fr = new FileReader(filePath+fileName); 
BufferedReader br = new BufferedReader(fr); 
String line = br.readLine(); 
while(line != null) 
{ 
System.out.println(line); 
line = br.readLine(); 
} 
br.close(); 
fr.close(); 
}
}


/***************************以下是常用的文件操作方法******************************/

/** 
     *  @see 新建目录 
     *  @param  folderPath  String  如  c:/fqf 
     *  @return  boolean 
     */ 
   public  void  newFolder(String  folderPath) 
{ 
       try  { 
           String  filePath  =  folderPath; 
           filePath  =  filePath.toString(); 
           java.io.File  myFilePath  =  new  java.io.File(filePath); 
           if  (!myFilePath.exists())  
            { 
               myFilePath.mkdir(); 
           } 
       } 
       catch  (Exception  e) 
       { 
           System.out.println("新建目录操作出错"); 
           e.printStackTrace(); 
       } 
   } 
 
   /** 
     *  @see 新建文件 
     *  @param  filePathAndName  String  文件路径及名称  如c:/fqf.txt 
     *  @param  fileContent  String  文件内容 
     *  @return  boolean 
     */ 
   public  void  newFile(String  filePathAndName,  String  fileContent)  { 
 
       try  { 
           String  filePath  =  filePathAndName; 
           filePath  =  filePath.toString(); 
           File  myFilePath  =  new  File(filePath); 
           if  (!myFilePath.exists())  { 
               myFilePath.createNewFile(); 
           } 
           FileWriter  resultFile  =  new  FileWriter(myFilePath); 
           PrintWriter  myFile  =  new  PrintWriter(resultFile); 
           String  strContent  =  fileContent; 
           myFile.println(strContent); 
           resultFile.close(); 
 
       } 
       catch  (Exception  e)  { 
           System.out.println("新建文件操作出错"); 
           e.printStackTrace(); 
 
       } 
 
   } 
 
   /** 
     *  @see 删除文件 
     *  @param  filePathAndName  String  文件路径及名称  如c:/fqf.txt 
     *  @param  fileContent  String 
     *  @return  boolean 
     */ 
   public  void  delFile(String  filePathAndName)  { 
       try  { 
           String  filePath  =  filePathAndName; 
           filePath  =  filePath.toString(); 
           java.io.File  myDelFile  =  new  java.io.File(filePath); 
           myDelFile.delete(); 
           System.out.println(myDelFile + "\\文件存在,已删除。");
 
       } 
       catch  (Exception  e)  { 
           System.out.println("删除文件操作出错"); 
           e.printStackTrace(); 
 
       } 
 
   } 
 
   /** 
     *  @see 删除文件夹 
     *  @param  filePathAndName  String  文件夹路径及名称  如c:/fqf 
     *  @param  fileContent  String 
     *  @return  boolean 
     */ 
   public  void  delFolder(String  folderPath)  { 
       try  { 
           delAllFile(folderPath);  //删除完里面所有内容 
           String  filePath  =  folderPath; 
           filePath  =  filePath.toString(); 
           java.io.File  myFilePath  =  new  java.io.File(filePath); 
           myFilePath.delete();  //删除空文件夹 
 
       } 
       catch  (Exception  e)  { 
           System.out.println("删除文件夹操作出错"); 
           e.printStackTrace(); 
 
       } 
 
   } 
 
   /** 
     *  @see 删除文件夹里面的所有文件 
     *  @param  path  String  文件夹路径  如  c:/fqf 
     */ 
   public  void  delAllFile(String  path)  { 
       File  file  =  new  File(path); 
       if  (!file.exists())  { 
           return; 
       } 
       if  (!file.isDirectory())  { 
           return; 
       } 
       String[]  tempList  =  file.list(); 
       File  temp  =  null; 
       for  (int  i  =  0;  i  <  tempList.length;  i++)  { 
           if  (path.endsWith(File.separator))  { 
               temp  =  new  File(path  +  tempList[i]); 
           } 
           else  { 
               temp  =  new  File(path  +  File.separator  +  tempList[i]); 
           } 
           if  (temp.isFile())  { 
               temp.delete(); 
           } 
           if  (temp.isDirectory())  { 
               delAllFile(path+"/"+  tempList[i]);//先删除文件夹里面的文件 
               delFolder(path+"/"+  tempList[i]);//再删除空文件夹 
           } 
       } 
   } 
 
   /** 
     *  @see 复制单个文件 
     *  @param  oldPath  String  原文件路径  如:c:/fqf.txt 
     *  @param  newPath  String  复制后路径  如:f:/fqf.txt 
     *  @return  boolean 
     */ 
   public  void  copyFile(String  oldPath,  String  newPath)  { 
       try  { 
           int  bytesum  =  0; 
           int  byteread  =  0; 
           File  oldfile  =  new  File(oldPath); 
           if  (oldfile.exists())  {  //文件存在时 
               InputStream  inStream  =  new  FileInputStream(oldPath);  //读入原文件 
               FileOutputStream  fs  =  new  FileOutputStream(newPath); 
               byte[]  buffer  =  new  byte[1444]; 
               //int  length = 0; 
               while  (  (byteread  =  inStream.read(buffer))  !=  -1)  { 
                   bytesum  +=  byteread;  //字节数  文件大小 
                   System.out.println(bytesum); 
                   fs.write(buffer,  0,  byteread); 
               } 
               inStream.close(); 
           } 
       } 
       catch  (Exception  e)  { 
           System.out.println("复制单个文件操作出错"); 
           e.printStackTrace(); 
 
       } 
 
   } 
 
   /** 
     *  @see 复制整个文件夹内容 
     *  @param  oldPath  String  原文件路径  如:c:/fqf 
     *  @param  newPath  String  复制后路径  如:f:/fqf/ff 
     *  @return  boolean 
     */ 
   public  void  copyFolder(String  oldPath,  String  newPath)  { 
 
       try  { 
           (new  File(newPath)).mkdirs();  //如果文件夹不存在  则建立新文件夹 
           File  a=new  File(oldPath); 
           String[]  file=a.list(); 
           File  temp=null; 
           for  (int  i  =  0;  i  <  file.length;  i++)  { 
               if(oldPath.endsWith(File.separator)){ 
                   temp=new  File(oldPath+file[i]); 
               } 
               else{ 
                   temp=new  File(oldPath+File.separator+file[i]); 
               } 
 
               if(temp.isFile()){ 
                   FileInputStream  input  =  new  FileInputStream(temp); 
                   FileOutputStream  output  =  new  FileOutputStream(newPath  +  "/"  + 
                           (temp.getName()).toString()); 
                   byte[]  b  =  new  byte[1024  *  5]; 
                   int  len; 
                   while  (  (len  =  input.read(b))  !=  -1)  { 
                       output.write(b,  0,  len); 
                   } 
                   output.flush(); 
                   output.close(); 
                   input.close(); 
               } 
               if(temp.isDirectory()){//如果是子文件夹 
                   copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]); 
               } 
           } 
       } 
       catch  (Exception  e)  { 
           System.out.println("复制整个文件夹内容操作出错"); 
           e.printStackTrace(); 
 
       } 
 
   } 
 
   /** 
     *  @see 移动文件到指定目录 
     *  @param  oldPath  String  如:c:/fqf.txt 
     *  @param  newPath  String  如:d:/fqf.txt 
     */ 
   public  void  moveFile(String  oldPath,  String  newPath)  { 
       copyFile(oldPath,  newPath); 
       delFile(oldPath); 
 
   } 
 
   /** 
     *  移动文件到指定目录 
     *  @param  oldPath  String  如:c:/fqf.txt 
     *  @param  newPath  String  如:d:/fqf.txt 
     */ 
   public  void  moveFolder(String  oldPath,  String  newPath)  { 
       copyFolder(oldPath,  newPath); 
       delFolder(oldPath); 
 
   } 
  
   /** 
    * @see 获得系统根目录绝对路径 
    * @return String 
    *   
    */
   public String getPath(){
  String sysPath = this.getClass().getResource("/").getPath();
     //对路径进行修改
  sysPath = sysPath.substring(1, sysPath.length() - 16);
  return  sysPath;
   
   }
 
分享到:
评论

相关推荐

    java文件操作总结

    下面将对Java文件操作进行详细的总结,并提供相关的示例。 1. **File类**:Java中的`File`类是所有文件和目录操作的基础。它提供了创建、删除、重命名文件和目录的方法,以及获取文件属性如大小、最后修改时间等。...

    java文件操作

    Java文件操作是编程中不可或缺的一部分,尤其是在处理I/O流、文件读写以及文件管理时。Apache Commons IO是一个非常实用的库,它为Java开发者提供了大量的工具类和方法,以简化文件操作。在这个场景中,我们关注的是...

    java文件读写操作

    - 自Java 7起,引入了NIO.2,提供更高效和更灵活的文件操作,如`Files`类中的静态方法,可以方便地进行文件操作,如复制、移动、删除等。 8. **字符编码**: - 文件读写时需考虑字符编码问题。默认的编码可能不...

    java 文件操作类

    总结来说,`java.io.File`类是Java中处理文件和目录的核心工具,配合自定义的`FileUtil`类,可以方便地进行各种文件操作,包括创建、删除、读取、写入等。熟练掌握`File`类和`FileUtil`类的使用,将使你在Java开发中...

    Java 文件追加操作

    在Java中,文件操作主要依赖于`java.io`包中的类,如`File`、`FileWriter`和`BufferedWriter`等。`File`类用于文件和目录的基本操作,如创建、删除和检查文件是否存在。而`FileWriter`和`BufferedWriter`则用于写入...

    java实现文件的读写操作

    在Java中,`java.io`包提供了丰富的类和接口来支持文件操作,如`File`、`FileReader`、`FileWriter`、`BufferedReader`和`BufferedWriter`等。首先,我们需要创建一个`File`对象来代表我们想要操作的文件或目录。...

    Java文件操作方法总结

    Java文件操作中的一些常用方法的总结,可以参考参考啦!

    java 移动文件.

    下面是关于 Java 文件操作的知识点总结: 一、文件移动 文件移动是指将文件从一个目录下移到另一个目录下。在 Java 中,可以使用 File 类的 renameTo 方法来实现文件移动。例如: `File oldFile = new File("c:/...

    java操作文件、文件夹

    根据提供的文件标题、描述、标签以及部分内容,我们可以总结出以下几个重要的Java知识点,这些知识点与文件操作密切相关: ### 1. 文件和目录的基本操作 #### 1.1 创建目录(文件夹) ```java public static void...

    ajax实现java文件下载

    在现代Web应用中,用户对交互性和...总结起来,Ajax实现Java文件下载是一种提高用户体验的有效手段,通过前后端的协同工作,实现了无刷新的文件下载功能。理解并掌握这一技术,对于提升Web应用的交互性具有重要意义。

    java 操作文件通用方法集合

    本文将深入解析一个名为`FileUtils`的类,该类封装了一系列用于文件操作的通用方法,旨在提高代码的复用性和效率。 #### 1. `getResourceStream`方法 此方法用于根据相对路径获取输入流,主要用于读取类路径下的...

    java文件管理器

    总的来说,Java文件管理器是一个综合性的项目,涵盖了文件操作、目录管理、数据安全等多个方面的知识,是学习和实践Java I/O和加密技术的好例子。通过这样的项目,开发者可以深入理解Java平台如何与操作系统交互,...

    java文件操作大全

    ### 一、Java文件操作概述 Java提供了丰富的API来处理文件操作,这些操作主要包括文件的创建、删除、读取和写入等基本功能。Java中的文件操作主要依赖于`java.io`包下的`File`类以及其他相关的输入/输出流类。 ###...

    java post文件流的操作

    #### 3.2 文件操作示例 - **获取文件名称**:`getOriginalFilename()`方法可以获取原始文件名。 - **转换文件类型**:通过类型转换,可以进一步操作文件,如将其转换为`CommonsMultipartFile`或`DiskFileItem`等...

    JAVA解析DBC文件

    总结来说,用JAVA解析DBC文件涉及的关键技术包括文件I/O操作、字符串处理、数据类型转换以及对象建模。在处理过程中需关注数据的大小端问题,以确保解析的正确性。同时,解析后的数据可以用于多种汽车相关的软件开发...

    java 分割文件 将大文件分割成小文件

    总结起来,Java提供了丰富的API来处理文件操作,包括分割大文件。通过结合`FileInputStream`、`FileOutputStream`以及适当的逻辑,我们可以根据文件大小或时间间隔来分割大文件。在实际开发中,应根据具体需求调整...

    java 二进制文件的读写操作

    ### Java 二进制文件的读写操作 在Java中,进行二进制文件的读写操作是非常常见的需求,尤其是在处理非文本类型的文件(如图片、音频或视频等)时。本文将详细介绍如何使用`FileInputStream`和`FileOutputStream`类...

    用JAVA实现文件的分割

    总结起来,Java提供了丰富的文件操作API,使得文件分割和合并变得简单易行。在实际应用中,这些技术可以用于分发大型文件、处理大数据流或实现分布式系统中的数据传输。了解和熟练掌握这些技术对于任何Java开发者来...

Global site tag (gtag.js) - Google Analytics