java 文本处理函数_Java 文件与文件夹操作实用函数

参考网址:http://www.x-beta.cn/programme/JAVA-File-Folder-Operation-0793.html

列举了一些这个项目中用到的文件/文件夹操作的函数,以备后用。

/**

* 计算文件夹大小

*/

public static final long getDirectorySize( File dir ) {

long retSize = 0;

if ( ( dir == null ) || !dir.isDirectory() ) {

return retSize;

}

File[] entries = dir.listFiles();

int count = entries.length;

for ( int i = 0; i < count; i++ ) {

if ( entries[ i ].isDirectory() ) {

retSize += getDirectorySize( entries[ i ] );

} else {

retSize += entries[ i ].length();

}

}

return retSize;

}

/**

* 删除文件夹

*/

public static final boolean deleteDirectory( File dir ) {

boolean bRet = false;

if ( dir !=null && dir.isDirectory() ) {

File[] entries = dir.listFiles();

int sz = entries.length;

for ( int i = 0; i < sz; i++ ) {

if ( entries[ i ].isDirectory() ) {

deleteDirectory( entries[ i ] );

} else {

entries[ i ].delete();

}

}

dir.delete();

bRet = true;

}

return bRet;

}

/**

* 新建文件夹

*/

public static final void createDirectory( String strDir ) {

File file = new File( strDir );

if ( !file.isDirectory() ) {

file.mkdir();

}

}

/**

* 移动文件

*/

public static final void moveFile( String strOriginal, String strDest ) throws IOException {try {File fileOriginal = new File( strOriginal );

File fileDest = new File( strDest );fileOriginal.renameTo( fileDest );

} catch ( IOException e ) {throw new IOException("");

}

}

/**

* 复制文件

*/

public static final void copyFile( String strOriginal, String strDest ) throws IOException{

try {

File fileOriginal = new File( strOriginal );

File fileDest = new File( strDest );

FileInputStream fis = new FileInputStream( fileOriginal );

FileOutputStream fos = new FileOutputStream( fileDest );

byte[] bytes = new byte[ 1024 ];

int c;

while ( ( c = fis.read( bytes ) ) != -1 ) {

fos.write( bytes, 0, c );

}

fis.close();

fos.close();

} catch ( IOException e ) {

throw new IOException("");

}

}

/**

* 复制文件夹

*/

public static final boolean copyDirectory( String strOriginal, String strDest ) throws Exception {

boolean bRet = false;

File dirOriginal = new File( strOriginal );

if ( dirOriginal !=null && dirOriginal.isDirectory() ) {

createDirectory( strDest );

File dirDest = new File( strDest );

File[] entries = dirOriginal.listFiles();

int sz = entries.length;

for ( int i = 0; i < sz; i++ ) {

StringBuffer sbDest = new StringBuffer();

sbDest.append( dirDest.getPath() );

sbDest.append( "\" );

sbDest.append( entries[ i ].getName() );

if ( entries[ i ].isDirectory() ) {

strDest = dirDest.getPath() + "\" + entries[ i ].getName();

copyDirectory( entries[ i ].getPath(), sbDest.toString() );

} else {

copyFile( entries[ i ].getPath(), sbDest.toString() );

}

}

bRet = true;

}

return bRet;

}

/**

* 读取文件

*/

private String readFile( File file ) {

String text= "";

if ( file.exists() ) {

Reader reader = null;

try {

char[] tempchars = new char[1024];

int charread = 0;

reader = new InputStreamReader( new FileInputStream( file ), "UTF-8" );

while ( ( charread = reader.read( tempchars ) ) != -1 ) {

for ( int i = 0; i < charread; i++ ) {

if ( tempchars[i] == '\r' ) {

continue;

} else {

text += tempchars[i];

}

}

}

reader.close();

} catch ( IOException e ) {

throw new IOException("");

}

}

return text;

}

/**

* 写入文件

*/

private boolean writeFile( File file, String text ) {

try {

Writer writer = new OutputStreamWriter( new FileOutputStream( file ), "UTF-8" );

writer.write( text );

writer.close();

return true;

} catch ( IOException e ) {

return false;

}

}

/**

* 文件夹中的文件按文件名排序(升序)

*/File[]   files = ( new File( strPictureDirectory ) ).listFiles();

File temp;

for ( int i = 0; i < files.length; i++ ) {

for ( int j = i; j < files.length; j++ ) {

if ( files[i].getName().compareTo( files[j].getName() ) > 0 ) {

temp = files[i];

files[i] = files[j];

files[j] = temp;

}

}

}

===============================================

取得文件大小:

package c.file;

import java.io.*;

public class Filee {

public static void main(String[] args) throws IOException {

File f = new File("C:\\Downloads\\plato_free070821.rar");

if (f.exists()) {

/** ///1 可以

*

* FileInputStream fis = null;

fis = new FileInputStream(f);

System.out.println("File has " + fis.available()+ " bytes");

System.out.println("File has " + (double)((double)fis.available()/1000/1000)+ "M");

System.out.println("File has " + (double)(fis.available()/1024/1024) + "M");*/

/** ///2 可以

* System.out.println("文件存在");

* System.out.println("文件大小为:"+(double)(f.length()/1024/1024)+"M");

*/

} else {

f.createNewFile();

System.out.println("文件不存在");

}

}

}

--------------------------------

取得文件夹大小

import java.io.*;

public class Filee {

/**

* 获得目录或文件夹的大小

* @param f

* @return

* @throws Exception

*/

private long recursionFileList(File f) throws Exception {

long size = 0;

File flist[] = f.listFiles();

for (int i = 0; flist != null && i < flist.length; i++) {

if (flist[i].isDirectory()) {

size = size + recursionFileList(flist[i]);

} else {

size = size + flist[i].length();

}

}

return size;

}

public static void main(String[] args) throws Exception {

File ff = new File("D:\\Fedora");

Filee g = new Filee();

if (ff.isDirectory())// 如果文件夹存在

{

long l = g.recursionFileList(ff);

System.out.println("Total size:"

+ (double) ((double) l / 1024 / 1024) + "M");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/** * 一、BufferedReader类 public class BufferedReader extends Reader * 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值足够大。 * 通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader包装所有其 read() * 操作可能开销很高的 Reader(如 FileReader和 InputStreamReader)。 * BufferedReader流能够读取文本行,通过向BufferedReader传递一个Reader对象 * ,来创建一个BufferedReader对象,之所以这样做是因为FileReader没有提供读取文本行的功能. * * 二、InputStreamReader类 * * InputStreamReader 将字节流转换为字符流。是字节流通向字符流的桥梁。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。 * * 构造方法: * * InputStreamReader isr = new InputStreamReader(InputStream * in);//构造一个默认编码集的InputStreamReader类 * * InputStreamReader isr = new InputStreamReader(InputStream in,String * charsetName);//构造一个指定编码集的InputStreamReader类。 * * 参数 in对象通过 InputStream in = System.in;获得。//读取键盘上的数据。 * * 或者 InputStream in = new FileInputStream(String fileName);//读取文件中的数据。可以看出 * FileInputStream 为InputStream的子类。 * * 主要方法:int read();//读取单个字符。 int read(char []cbuf);//将读取到的字符存到数组中。返回读取的字符数。 * * 三、FileWriter(少量文字) 和 BufferedWriter(大量文字)实现简单文件操作 * @author hulk */

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值