步骤 2 : 答案-复制文件 步骤 3 : 练习-复制文件夹 步骤 4 : 答案-复制文件夹 步骤 5 : 练习-查找文件内容 步骤 6 : 答案-查找文件内容
复制文件是常见的IO操作,设计如下方法,实现复制源文件srcFile到目标文件destFile
public static void copyFile(String srcFile, String destFile){ }
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
4分49秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器
需要留意的是,read会返回实际的读取数量,有可能实际的读取数量小于缓冲的大小,那么把缓冲中的数据写出到目标文件的时候,就只应该写出部分数据。
package stream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class TestStream {
/**
*
* @param srcPath 源文件
* @param destPath 目标文件
*/
public static void copyFile(String srcPath, String destPath){
File srcFile = new File(srcPath);
File destFile = new File(destPath);
//缓存区,一次性读取1024字节
byte[] buffer = new byte[1024];
try (
FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(destFile);
){
while(true){
//实际读取的长度是 actuallyReaded,有可能小于1024
int actuallyReaded = fis.read(buffer);
//-1表示没有可读的内容了
if(-1==actuallyReaded)
break;
fos.write(buffer, 0, actuallyReaded);
fos.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* @param srcPath 源文件夹
* @param destPath 目标文件夹
*/
public static void copyFolder(String srcPath, String destPath){
}
public static void main(String[] args) {
copyFile("d:/lol.txt", "d:/lol2.txt");
}
}
复制文件夹,实现如下方法,把源文件夹下所有的文件 复制到目标文件夹下(包括子文件夹)
public static void copyFolder(String srcFolder, String destFolder){ }
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
4分25秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 package stream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class TestStream {
/**
*
* @param srcPath 源文件
* @param destPath 目标文件
*/
public static void copyFile(String srcPath, String destPath){
File srcFile = new File(srcPath);
File destFile = new File(destPath);
//缓存区,一次性读取1024字节
byte[] buffer = new byte[1024];
try (
FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(destFile);
){
while(true){
//实际读取的长度是 actuallyReaded,有可能小于1024
int actuallyReaded = fis.read(buffer);
//-1表示没有可读的内容了
if(-1==actuallyReaded)
break;
fos.write(buffer, 0, actuallyReaded);
fos.flush();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
* @param srcPath 源文件夹
* @param destPath 目标文件夹
*/
public static void copyFolder(String srcPath, String destPath){
File srcFolder = new File(srcPath);
File destFolder = new File(destPath);
//源文件夹不存在
if(!srcFolder.exists())
return;
//源文件夹不是一个文件夹
if(!srcFolder.isDirectory())
return;
//目标文件夹是一个文件
if(destFolder.isFile())
return;
//目标文件夹不存在
if(!destFolder.exists())
destFolder.mkdirs();
//遍历源文件夹
File[] files= srcFolder.listFiles();
for (File srcFile : files) {
//如果是文件,就复制
if(srcFile.isFile()){
File newDestFile = new File(destFolder,srcFile.getName());
copyFile(srcFile.getAbsolutePath(), newDestFile.getAbsolutePath());
}
//如果是文件夹,就递归
if(srcFile.isDirectory()){
File newDestFolder = new File(destFolder,srcFile.getName());
copyFolder(srcFile.getAbsolutePath(),newDestFolder.getAbsolutePath());
}
}
}
public static void main(String[] args) {
copyFolder("d:/LOLFolder", "d:/LOLFolder2");
}
}
public static void search(File folder, String search); 假设你的项目目录是 e:/project,遍历这个目录下所有的java文件(包括子文件夹),找出文件内容包括 Magic的那些文件,并打印出来。
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
4分6秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 package stream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class TestStream {
/**
* @param file 查找的目录
* @param search 查找的字符串
*/
public static void search(File file, String search) {
if (file.isFile()) {
if(file.getName().toLowerCase().endsWith(".java")){
String fileContent = readFileConent(file);
if(fileContent.contains(search)){
System.out.printf("找到子目标字符串%s,在文件:%s%n",search,file);
}
}
}
if (file.isDirectory()) {
File[] fs = file.listFiles();
for (File f : fs) {
search(f, search);
}
}
}
public static String readFileConent(File file){
try (FileReader fr = new FileReader(file)) {
char[] all = new char[(int) file.length()];
fr.read(all);
return new String(all);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
File folder =new File("e:\\project");
search(folder,"Magic");
}
}
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2024-07-23
练习-查找文件内容
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2024-07-07
一种寻找指定路径下的所有文件中存在指定信息的所有文件
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2024-07-07
创建指定文件夹中所有文件的副本(包含子文件夹和子文件)
2024-05-27
三道题的答案
2023-01-20
练习-查找文件内容
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 107 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|