关于流处理等问题

/**

*/
package xiewerifeng_day19;

import java.io.BufferedReader;
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.InputStreamReader;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;

/**

/
public class StreamUtil {
/

  • 方法1:批量关闭流,参数能传入无限个。(10分)
  • 例如传入FileInputStream对象、JDBC中Connection对象都可以关闭,并且参数个数不限。
    */
    public static void closeAll(AutoCloseable src) throws IOException {
    try {
    src.close();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

/*

  • 方法2:传入一个文本文件对象,默认为UTF-8编码,返回该文件内容(10分),要求方法内部调用上面第1个方法关闭流(5分)
    */
    public static String readTextFile(InputStream src) {
    BufferedReader reader = new BufferedReader(new InputStreamReader(src, StandardCharsets.UTF_8));
    byte b[] = new byte[2048];
    int len = 0;
    int temp = 0;
    String stu = “”;
    try {
    while ((temp = reader.read()) != -1) {
    b[len] = (byte) temp;
    len++;
    }
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally {
    try {
    closeAll(src);
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return new String(b, 0, len);
    }

}

/*

  • 方法3:传入文本文件对象,返回该文件内容(10分),并且要求内部调用上面第2个方法(5分)。* 这是典型的方法重载,记住了吗?少年…
    */
    @SuppressWarnings({ “resource”, “finally” })
    public static String readTextFile(File txtFile) {
    String file = “”;
    try {
    FileInputStream inputStream = new FileInputStream(txtFile);
    file = readTextFile(inputStream);
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally {
    return file;
    }
    }

//File f 文件目录,rootPath 根目录,outPath输出目录,suffix输出文件的后缀名
public static void CopyToPath(File f, String rootPath, String outPath, String suffix) {
File[] files = f.listFiles();
for (File file : files) {
//输出流
OutputStreamWriter writer = null;
//获取当前文件在目录下的路径
String path = file.getPath();
//截取根目录后面的字符串
String substring = path.substring(rootPath.length());
//将输出目录和文件路径拼接,生成新的路径
File file2 = new File(outPath + substring);
//判断是否文件
if (!file.isDirectory() && file != null) {
//获取文件后缀名
String string = FileUtil.getExtendName(file.getName());
//判断是否是要输出的文件
if (string.equals(suffix)) {
//读取当前文件内容
String string2 = StreamUtil.readTextFile(file);
try {
//获取输出流
writer = new OutputStreamWriter(new FileOutputStream(file2));
//将文件内容,输出到指定地址
writer.write(string2);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
writer.flush();
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//关闭流
} else {
continue;
}
} else {
//判断输出目录是否存在,不存在则创建
if (!file2.exists()) {
file2.mkdirs();
}
//判断时目录,则递归
CopyToPath(file, rootPath, outPath, suffix);
System.out.println(“递归中”);
}
}
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值