Java遍历数组

来源:互联网 发布:淘宝嗅觉系是真的吗? 编辑:程序博客网 时间:2024/06/10 12:52
中信笔试中遇到遍历文件夹的题目。

一、遍历所有的文件夹及子目录文件的名字。复习下IO数组

package com.test.io;import java.io.File;public class IO {public static void main(String[] args) {String path = "D:/360/360sd/Config";bianli(path);}public static void bianli(String path) {File file = new File(path);File[] list = file.listFiles();for (int i = 0; i < list.length; i++) {if (list[i].isDirectory()) {System.out.println(list[i].getName());bianli(list[i].getPath());} else {System.out.println(list[i].getName());}}}}

二、输入任意目录,遍历目录及文件
package com.test.io;import java.io.File;import java.util.Scanner;public class demo2 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入目录: ");String next = scanner.next();/*在windows目录复制时是\符号,无法识别,为了方便用/替换*/String replaceAll = next.replace("\\", "/");buanli(replaceAll);}public static void buanli(String string) {File file = new File(string);File[] listFiles = file.listFiles();System.out.println("listFiles.length is :  " + listFiles.length);for (int i = 0; i < listFiles.length; i++) {if (listFiles[i].isDirectory()) {buanli(listFiles[i].getName());}System.out.println(listFiles[i].getName());}}}

三、遍历目录下的java文件
package com.test.io;import java.io.File;//递归实现列出当前工程下所有.java文件public class deme3 {public static void main(String[] args) {String path = "D:/腾讯/QQ/QQ消息/1371173990/FileRecv/StudentManage/src/com/test";// build\classesbuanli(path);}public static void buanli(String str) {File file = new File(str);// String[] list = file.list();File[] list = file.listFiles();// System.out.println(list.length);if (list != null) {for (int i = 0; i < list.length; i++) {System.out.print(" I is=" + i);if (list[i].isDirectory()) {System.out.println(" dir:" + list[i]);buanli(list[i].getPath());/* * 看api报NullPointerException 原因是使用了list[i].getName()。 应该用 * list[i].getPath() getName() 返回由此抽象路径名表示的文件或目录的名称 * getPath() 将此抽象路径名转换为一个路径名字符串。 * File一个参数构造函数的是:url或者pathname public File(String pathname) * { if (pathname == null) { throw new * NullPointerException(); } this.path = * fs.normalize(pathname); this.prefixLength = * fs.prefixLength(this.path); } */}if (list[i].getName().endsWith(".java")) {System.out.println(" Path1 = " + list[i].getName());}// System.out.print(" Path2 = " + list[i].getName() + i);}}}}

四、输入两个文件夹、B,将A中的所有文件复制到B中
package com.test.io;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.Scanner;public class demo4 {// 输入两个文件夹名称,将A文件夹内容全部拷贝到B文件夹
//思路:目录和普通文件。1.创建文件及目录。2判断是否为文件 是则用流获取元数据的数据输出到目标文件中static ArrayList<String> arraylist = new ArrayList();//全局变量获取需要复制的文件夹中的路径public static void main(String[] args) {// TODO Auto-generated method stubScanner scanner = new Scanner(System.in);System.out.println("请输入要复制的文件夹");String fromdir = scanner.next();System.out.println("复制到哪里去");String todir = scanner.next();File fromfile = new File(fromdir);File tofile = new File(todir);buanli(fromdir);arraylist(arraylist, fromdir, todir);// createFile("D:/IOO");}//遍历元文件夹,将文件目录累计到全局数组中public static void buanli(String string) {File file = new File(string);File[] listFiles = file.listFiles();// ArrayList<String> arraylist = new ArrayList<String>();// System.out.println(listFiles[0].isDirectory());// System.out.println("listFiles.length is : " + listFiles.length);for (int i = 0; i < listFiles.length; i++) {// System.out.println(listFiles[i].getName());System.out.println(listFiles[i].getPath());arraylist.add(listFiles[i].getPath());if (listFiles[i].isDirectory()) {buanli(listFiles[i].getPath());// System.out.println(listFiles[i]);}// System.out.println(listFiles[i].getName());}}//1遍历全局数组 2 替换\ 为/  3判断是否是目录,不是则复制public static void arraylist(ArrayList<String> arraylist, String fromfile, String toFile) {for (int i = 0; i < arraylist.size(); i++) {// System.out.println("1");// System.out.println("创建文件或目录:" + arraylist.get(i));System.out.println("创建文件或目录:" + arraylist.get(i).replace(fromfile, toFile));createFile(arraylist.get(i), arraylist.get(i).replace(fromfile, toFile));// copy(arraylist.get(i), arraylist.get(i).replace(fromfile,// toFile));if (new File(arraylist.get(i)).isFile()) {copy(arraylist.get(i), arraylist.get(i).replace(fromfile, toFile));}}}//引用修改public static void copy(String fromFile, String toFile) {File file = new File(fromFile);File File2 = new File(toFile);// 定义一个输入流FileInputStream fis = null;// 定义一个输出流FileOutputStream fos = null;try {// 把复制地址的File,封装后赋值给输入流对象fis = new FileInputStream(file);// 把目的地的File,封装后复制给输出流的对象fos = new FileOutputStream(File2);// 创建一个容量,byte[] buf = new byte[1024];// 每次读取/写入的字节长度int len = 0;// 边读边写while ((len = fis.read(buf)) != -1) {// 判断是否还能读到数据// 把输入放到输出流里面fos.write(buf, 0, len);}} catch (Exception e) {e.printStackTrace();} finally {try {// 关闭输入流和输出流fis.close();fos.close();} catch (IOException e) {e.printStackTrace();}}}public static void createFile(String fromFile, String toFile) {File frfile = new File(fromFile);File tFile = new File(toFile);if (frfile.isDirectory()) {System.out.println("创建目录:" + toFile);tFile.mkdirs();} else {try {tFile.createNewFile();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}


原创粉丝点击