1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
package work;
/*
* 1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Work002 {
public static void main(String[] args) throws IOException{
File file = new File("C:\\Users\\ZYX'sDay\\Desktop\\FileDemo");
File file1 = new File(file,"ss");
File file2 = new File(file,"sfsdf");
fileCopy(file1,file2);
}
private static void fileCopy(File file1, File file2) throws IOException{
FileInputStream fis = null;
FileOutputStream fos = null;
File[] files = file1.listFiles();
for (File file : files) {
if(file.isDirectory()){
fileCopy(file, file2);
}else {
fis = new FileInputStream(file);
fos = new FileOutputStream(new File( file2, file.getName() ) );
byte[] bytes = new byte[1024];
int len = 0;
while( (len = fis.read(bytes)) != -1 ){
fos.write(bytes, 0, len);
}
fis.close();
fos.close();
}
}
}
}
2.获取指定目录及子目录下所有txt文件的个数,并将这些txt文件复制到D盘下任意目录
package work;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
//2.获取指定目录及子目录下所有txt文件的个数,
//并将这些txt文件复制到D盘下任意目录
public class Work003 {
static int count = 0;
public static void main(String[] args)throws IOException {
File file = new File("C:\\Users\\ZYX'sDay\\Desktop\\FileDemo");
File fileO = new File("D:\\day23worktest");
copyAlltxt(file,fileO);
System.out.println(file+" 下.txt类型文件个数为: "+count);
}
private static void copyAlltxt(File file,File fileO) throws IOException{
FileReader fr = null;
FileWriter fw = null;
File[] files = file.listFiles(new MyFileFilter());
for (File file2 : files) {
if(file2.isDirectory()){
copyAlltxt(file2, fileO);
}else {
count++;
fr = new FileReader(file2);
fw = new FileWriter(new File(fileO, file2.getName()));
char[] ch = new char[1024];
int len = 0;
while( (len = fr.read(ch)) != -1 ){
fw.write(ch, 0, len);
fw.flush();
}
fr.close();
fw.close();
}
}
}
}
//过滤类
package work;
import java.io.File;
import java.io.FileFilter;
public class MyFileFilter implements FileFilter{
@Override
public boolean accept(File dir) {
if(dir.isDirectory()) return true;
return dir.getName().toLowerCase().endsWith(".txt");
}
}
3.键盘输入10个数,放到数组中
(1)去除该数组中大于10的数
(2)将该数组中的数字写入到本地文件number.txt中
package work;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
/*
* 键盘输入10个数,放到数组中
(1)去除该数组中大于10的数
(2)将该数组中的数字写入到本地文件number.txt中
*/
public class Work004 {
public static void main(String[] args)throws IOException {
File file = new File("D:\\day23worktest\\number.txt");
int[] ch = {1,55,52,73,4,5,6,2,3,6};
writeFile(charFilter(ch),file);
}
//打印到文件中
private static void writeFile(char[] charFilter, File file) throws IOException{
FileWriter fw = new FileWriter(file);
//直接一行写的方式写出来数字之间没有空格看着不够直接 所以摒弃
//fw.write(charFilter, 0, charFilter.length);
for(int i = 0 ; i < charFilter.length ; i++){
fw.append(charFilter[i]);
fw.append(' ');
fw.flush();
}
fw.close();
}
//charfilter 过滤大于10的数
private static char[] charFilter(int[] ch) {
StringBuilder sb = new StringBuilder();
for(int i:ch){
if(i < 10){
sb.append(i);
//System.out.println(i);
}
}
char[] sch = sb.toString().toCharArray();
return sch;
}
}
4.产生10个1-100的随机数,并放到一个数组中
(1)把数组中大于等于10的数字放到一个list集合中,并打印到控制台。
(2)把数组中的数字放到当前文件夹的number.txt文件中
package work;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/*
* 4.产生10个1-100的随机数,并放到一个数组中
(1)把数组中大于等于10的数字放到一个list集合中,并打印到控制台。
(2)把数组中的数字放到当前文件夹的number.txt文件中
*/
public class Work005 {
public static void main(String[] args) throws IOException{
File file = new File("D:\\day23worktest\\number.txt");
List<Integer> list = randomInt();
FileWriter fw = new FileWriter(file);
for (Integer ing : list) {
fw.append( ing.toString() );
fw.write(' ');
fw.flush();
}
fw.close();
}
//生成随机数数组
private static List<Integer> randomInt() {
List<Integer> list = new ArrayList<Integer>();
int[] num = new int[10];
//生成随机数放入数组 并 把大于10的数加到List里
Random ran = new Random();
for(int i = 0 ; i < 10 ;i++){
num[i] = ran.nextInt(100);
if(num[i] > 10){
list.add( (Integer)num[i] );
}
}
for(Integer intg : list){
System.out.print(intg+" ");
}
return list;
}
}
5.list集合添加姓名{张三,李四,王五,二丫,钱六,孙七},将二丫替换为王小丫,写入到"D:\\stuinfo.txt"
package work;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/*
* 5.list集合添加姓名{张三,李四,王五,二丫,钱六,孙七},
* 将二丫替换为王小丫,写入到"D:\\stuinfo.txt"
*/
public class Work006 {
public static void main(String[] args)throws IOException {
File file = new File("D:\\day23worktest\\stuinfo.txt");
FileWriter fw = new FileWriter(file);
List<String> list = new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("二丫");
list.add("钱六");
list.add("孙七");
//遍历 + 替换
for(int index = 0 ; index < list.size() ; index++){
if(list.get(index).equalsIgnoreCase("二丫")){
list.set(index, "王小丫");
}
fw.append(list.get(index));
fw.append(" ");
fw.flush();
}
fw.close();
}
}
6.从控制台获取输入的文件目录然后将该目录(包含子目录)下的.java文件复制到D:/java文件夹中
package work;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 6.从控制台获取输入的文件目录
* 然后将该目录(包含子目录)下的.java文件复制到D:/java文件夹中
* 这个题目可以根据之前写的题目1的改一改就行,依旧省略输入目录
*/
public class Work007 {
public static void main(String[] args) throws IOException {
File file1 = new File("D:\\day23worktest");
File file2 = new File("D:\\Java");
copyFile(file1, file2);
}
//文件挑选和拷贝
public static void copyFile(File file1,File file2)throws IOException{
File[] files = file1.listFiles();
FileInputStream fis = null;
FileOutputStream fos = null;
for(File ff: files){
if(ff.isDirectory()){
copyFile(ff, file2);
}else {
if(ff.getName().endsWith(".java")){
fis = new FileInputStream(ff);
fos = new FileOutputStream(new File(file2,ff.getName()));
int len = 0;
byte[] by = new byte[1024];
while( (len = fis.read(by)) != -1 ){
fos.write(by, 0, len);
}
fis.close();
fos.close();
}
}
}
}
}