- 1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
package exrcise;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class Demo1 {
/*
* 1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
* */
public static void main(String[] args) {
while(true) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入源文件地址:\n");
String userInput = scanner.nextLine();
if(userInput.equals("exit")) {
System.out.println("程序退出...");
System.exit(0);
}
File sFile = new File(userInput);
File dFile = null;
if(isPathAvailable(sFile)) {
System.out.println("请输入目的地址:\n");
dFile = new File(scanner.nextLine());
copyDemo(sFile, dFile);
System.out.println("程序退出...");
System.exit(0);
}else {
System.out.println("地址无效,请重新输入地址!");
}
}
}
public static boolean copyDemo(File sFile, File dFile) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(sFile);
fos = new FileOutputStream(dFile);
byte[] buf = new byte[1024];
int len = 0;
while((len=fis.read(buf))!=-1) {
fos.write(buf, 0, len);
}
System.out.println("文件复制成功.");
return true;
} catch (IOException e) {
System.out.println("复制文件失败!");
System.out.println(e.toString());
}finally {
try{
if (fis != null)
fis.close();
}catch(IOException e){
throw new RuntimeException("关闭资源失败");
}finally {
try {
if (fos != null)
fos.close();
}catch(IOException e) {
throw new RuntimeException("关闭资源失败");
}
}
}
return false;
}
public static boolean isPathAvailable(File path) {
if(path.exists() && path.isFile())
return true;
return false;
}
}
- 2.获取指定目录及子目录下所有txt文件的个数,并将这些txt文件复制到D盘下任意目录
package exrcise;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class Demo2 {
public static String sepa = java.io.File.separator;
/*
* 2.获取指定目录及子目录下所有txt文件的个数,并将这些txt文件复制到D盘下任意目录
* */
public static void main(String[] args) {
File sDir = getDir();
File dDir = new File("/home/alex/test/newTest");
function(sDir, dDir);
}
private static void function(File sDir, File dDir) {
/*
* 主功能方法
* */
if(!dDir.exists()) {
dDir.mkdir();
}
File[] fl = sDir.listFiles(new MyFilter());
FileInputStream fis = null;
FileOutputStream fos = null;
for (File f : fl) {
if(f.isDirectory()) {
function(f, dDir);
}else {
File newFileName = new File(dDir.getAbsolutePath() + sepa + f.getName());
try {
fis = new FileInputStream(f);
fos = new FileOutputStream(newFileName);
byte[] buf = new byte[1024];
int len = 0;
while((len=fis.read(buf))!=-1) {
fos.write(buf, 0, len);
}
System.out.println("已将文件"+ newFileName.getName() + "复制到" + dDir.getAbsolutePath());
}catch(IOException e){
e.printStackTrace();
throw new RuntimeException("复制文件失败");
}finally {
try{
if (fis != null)
fis.close();
}catch(IOException e){
throw new RuntimeException("关闭资源失败");
}finally {
try {
if (fos != null)
fos.close();
}catch(IOException e) {
throw new RuntimeException("关闭资源失败");
}
}
}
}
}
}
private static File getDir() {
/*
* 检测输入路径是否可用
* */
Scanner scanner = new Scanner(System.in);
String userInput = scanner.nextLine();
File path = new File(userInput);
if(path.exists() && path.isDirectory()) {
return path;
}else {
return null;
}
}
}
class MyFilter implements FileFilter {
/*
* 过滤txt文件
* */
@Override
public boolean accept(File pathname) {
if (pathname.isDirectory()) {
return true;
}
if(pathname.getName().endsWith("txt")) {
return true;
}
return false;
}
}
- 3.键盘输入10个数,放到数组中
(1)去除该数组中大于10的数
(2)将该数组中的数字写入到本地文件number.txt中
package exrcise;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;
public class Demo3 {
/*
*
* 3.键盘输入10个数,放到数组中
(1)去除该数组中大于10的数
(2)将该数组中的数字写入到本地文件number.txt中
*
* */
public static void main(String[] args) {
int[] intArr = getIntArr();
writeToFile(intArr, new File("/home/alex/test/number.txt"));
}
private static void writeToFile(int[] intArr, File path) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(path);
//转为字符串写入文件
fos.write(Arrays.toString(intArr).getBytes());
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static int[] getIntArr() {
Scanner scanner = new Scanner(System.in);
int[] intArr = new int[10];
int count = 0;
while(count < 10) {
System.out.println("请输入第"+ (count+1) +"个整数:\n");
String userInput = scanner.nextLine();
if(isInputAvailable(userInput)) {
int val = Integer.parseInt(userInput);
if(val <= 10) {
intArr[count] = val;
count++;
}
}else {
System.out.println("只能数入整数.\n");
}
}
return intArr;
}
public static boolean isInputAvailable(String input) {
if(input.matches("[\\d]+")) {
return true;
}
return false;
}
}
- 4.产生10个1-100的随机数,并放到一个数组中
(1)把数组中大于等于10的数字放到一个list集合中,并打印到控制台。
(2)把数组中的数字放到当前文件夹的number.txt文件中
package exrcise;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
public class Demo4 {
/*
* 4.产生10个1-100的随机数,并放到一个数组中
(1)把数组中大于等于10的数字放到一个list集合中,并打印到控制台。
(2)把数组中的数字放到当前文件夹的number.txt文件中
* */
public static void main(String[] args) {
//产生10个1-100的随机数,并放到一个数组中
int[] arr = getArr();
//把数组中大于等于10的数字放到一个list集合中,并打印到控制台。
List<Integer> list = getList(arr);
System.out.println(list.size());
System.out.println(list.toString());
//把数组中的数字放到当前文件夹的number.txt文件中
writeToFile(arr);
}
private static void writeToFile(int[] arr) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(new File("/home/alex/test/number1.txt"));
fos.write(Arrays.toString(arr).getBytes());
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static int[] getArr() {
int[] intArr = new int[100];
Random ran = new Random();
for (int i = 0; i < intArr.length; i++) {
int num = ran.nextInt(99) + 1;
intArr[i] = num;
}
return intArr;
}
private static List<Integer> getList(int[] arr) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < arr.length; i++) {
if(arr[i]>=10) {
list.add(arr[i]);
}
}
return list;
}
}
- 5.list集合添加姓名{张三,李四,王五,二丫,钱六,孙七},将二丫替换为王小丫,写入到"D:\\stuinfo.txt"
package exrcise;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
public class Demo5 {
/*
* 5.list集合添加姓名{张三,李四,王五,二丫,钱六,孙七},将二丫替换为王小丫,写入到"D:\\stuinfo.txt"
*
* */
public static void main(String[] args) throws IOException {
//就不处理异常了直接写main中
List<String> list = new ArrayList<>();
String[] str = {"张三","李四","王五","二丫","钱六","孙七"};
for(int i=0;i<str.length;i++) {
list.add(str[i]);
}
list.set(list.indexOf("二丫"), "王小丫");
String content = list.toString();
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("/home/alex/test/stuinfo.txt"));
osw.write(content);
osw.flush();
osw.close();
}
}
- 6.从控制台获取输入的文件目录然后将该目录(包含子目录)下的.java文件复制到D:/java文件夹中
package exrcise;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Scanner;
public class Demo6 {
/*
*
* 6.从控制台获取输入的文件目录然后将该目录(包含子目录)下的.java文件复制到D:/java文件夹中
* */
public static void main(String[] args){
File path = getDir();
copyJavaFile(path, "/home/alex/java/");
}
private static void copyJavaFile(File path, String dest){
File destFile = new File(dest);
FileOutputStream fos = null;
FileInputStream fis = null;
File[] fl = path.listFiles(new MyJavaFilter());
for (File file : fl) {
if(file.isDirectory()) {
copyJavaFile(file, dest);
}else if(file.isFile()){
try {
File newFile = new File(destFile.getAbsolutePath()+"/"+file.getName());
fis = new FileInputStream(file);
fos = new FileOutputStream(newFile);
int len = 0;
byte[] buf = new byte[512];
while((len = fis.read(buf))!=-1) {
fos.write(buf, 0, len);
}
fos.flush();
}catch(IOException e) {
e.printStackTrace();
}finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
private static File getDir() {
/*
* 检测输入路径是否可用
* */
Scanner scanner = new Scanner(System.in);
System.out.println("输入文件夹路径:");
File path = null;
while(true) {
String userInput = scanner.nextLine();
path = new File(userInput);
if(!path.exists() && !path.isDirectory()) {
System.out.println("路径错误,请重新输入。");
}else {
break;
}
}
return path;
}
}
class MyJavaFilter implements FileFilter{
@Override
public boolean accept(File pathname) {
if(pathname.isDirectory()) {
return true;
}else if(pathname.getName().endsWith("java")){
return true;
}
return false;
}
}