黑马程序员技术交流社区
标题:
黑马测试题,怎么做,求大神~
[打印本页]
作者:
苯小孩hehe
时间:
2015-10-10 14:19
标题:
黑马测试题,怎么做,求大神~
编写程序,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt (还没学到^^)
作者:
ls_相信未来
时间:
2015-10-10 14:38
package com.itheima;
import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args) throws Exception
{
//定义集合存储.java的文件名
ArrayList<String> list = new ArrayList<String>();
//关联源文件路径
File src = new File("E:\\JAVA\\黑马\\exam");
//关联目的文件路径
File des = new File("E:\\JAVA\\黑马\\txt");
//判断目的文件是否存在,不存在就创建
if(!des.exists())
des.mkdirs();
//将源文件中.java的文件名存入到集合中
fileTolist(src,list);
//遍历集合中.java的文件名
for(String fileName : list)
{
//调用方法,将源文件中.java的文件存入到目的文件夹中,并将扩展名改为.txt
writeTofile(src, des, fileName);
}
}
/**
* 将源文件中.java的文件名存入到集合中
* @param file
* @param list
*/
public static void fileTolist(File file,List<String> list)
{
//获取源文件夹中的文件
File[] files = file.listFiles();
for(File f : files)
{
//遍历文件并将.java的文件名存入到集合中
list.add(f.getName());
}
}
//将源文件中.java的文件存入到目的文件夹中
public static void writeTofile(File src,File des, String fileName) throws Exception
{
BufferedReader bfr = new BufferedReader(new FileReader(new File(src, fileName)));
//.java文件改名为.txt文件
BufferedWriter bfw = new BufferedWriter(new FileWriter(new File(des,fileName.replace(".java", ".txt"))));
String line = null;
while((line=bfr.readLine())!=null)
{
bfw.write(line);
bfw.newLine();
bfw.flush();
}
//关闭资源
bfw.close();
bfr.close();
}
}
复制代码
作者:
ls_相信未来
时间:
2015-10-10 14:49
这是看别人写的,不过感觉fileToList方法有点问题
应该是加个匿名内部类判断.java后缀
public static void fileTolist(File file,List<String> list)
{
//获取源文件夹中后缀为.java的文件
File[] files = file.listFiles(
new FilenameFilter()
{
public boolean accept(File dir,String name)
{
return name.endsWith(".java");
}
}
);
for(File f : files)
{
//遍历文件并将.java的文件名存入到集合中
list.add(f.getName());
}
}
复制代码
作者:
didixyy
时间:
2015-10-10 16:34
这个是我写的方法,凑合看吧,我也是初学者。
package com.itheima;
//9、 编写程序,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt
import java.io.*;
import java.util.ArrayList;
public class test9 {
//顶一个集合存入File类型对象
static ArrayList<File>array= new ArrayList<File>();
public static void showDir(File dir)//定义一个递归方法取出传入路径的所有文件
{
//定义一个File数组接受目录中的文件
File[] fi=dir.listFiles();
//把当前接受的目录存入数组
array.add(dir);
for(int x=0;x<fi.length;x++)
{
if(fi[x].isDirectory())//判断否是一个目录
{
showDir(fi[x]);//如果是目录再次调用本方法
}
else{
if(fi[x].toString().endsWith(".java"))//如果不是目录判断当前文件是否是.java结尾
array.add(fi[x]);//如果是加入集合
}
}
}
public static void Write(File dir1,File dir2) //定义写出方法,需要有源和目的地,
{
showDir(dir1);//先把接受的远传入递归方法取出所有目录和文件路径
for(File f1:array)//因为流无法直接创建带有路径的文件,所以遍历集合中的所有目录和文件,创建文件夹
{
String ss=f1.toString().replaceAll("\\\\","\\\\\\\\");
ss=ss.replaceAll(".java",".txt");
StringBuffer sb1=new StringBuffer(ss);
sb1.replace(0, dir1.getPath().length()+1,dir2.getPath().replaceAll("\\\\","\\\\\\\\"));
File f2=new File(sb1.toString());
makeDir(f2);
}
for(File f1:array)//遍历集合中的所有目录和文件,创建文件
{
String ss=f1.toString().replaceAll("\\\\","\\\\\\\\");
ss=ss.replaceAll(".java",".txt");
StringBuffer sb1=new StringBuffer(ss);
sb1.replace(0, dir1.getPath().length()+1,dir2.getPath().replaceAll("\\\\","\\\\\\\\"));
File f2=new File(sb1.toString());
Writedir(f1,f2);
}
}
public static void makeDir(File f1)
{
if(!f1.getParentFile().exists())//获取父路径是否存在。如果不存在则创建
{
f1.getParentFile().mkdir();
}
}
public static void Writedir(File f1,File f2)
{
//创建读取流和输出流
BufferedInputStream bufr = null;
BufferedOutputStream buot = null;
if(!f1.isDirectory())//判断是否是目录
{
try {
bufr= new BufferedInputStream(new FileInputStream(f1));//如果不是把文件读出来
} catch (FileNotFoundException e) {
throw new RuntimeException("文件读取失败");//如果文件读取不到,抛出异常
}
}
if(!f2.exists())//判断文件或目录是否存在
{
try {
buot=new BufferedOutputStream(new FileOutputStream(f2));//创建输出流
} catch (FileNotFoundException e) {
throw new RuntimeException("文件写入失败");
}
}
try
{//当两个流都不为空时,普通的流输出方法
if(bufr!=null &&buot!=null){
int len=0;
byte [] b=new byte[1024];
while((len=bufr.read(b))!=-1)
{
buot.write(b);
buot.flush();
}
}
}
catch(IOException e)
{
throw new RuntimeException("文件写入失败");
}
finally//最后关闭流
{
try
{
if(!(bufr==null))
bufr.close();
if(!(buot==null))
buot.close();
}
catch(IOException e)
{
throw new RuntimeException("操作失败");
}
}
}
public static void main(String[] args) {
File dir1=new File("E:\\1");
File dir2=new File("F:\\1");
Write(dir1,dir2);
}
}
复制代码
作者:
zrc203
时间:
2015-10-10 17:47
我自己写的,你参考一下
import java.util.*;
import java.io.*;
public class FileList {
public static void main(String[] args) throws Exception {
File[] copys = new File("D:"+File.separator+"0").listFiles();//获得D:/0/目录下全部文件
List<InputStream> islist = new ArrayList<InputStream>();//字节流 ,读取文件
for(int i = 0;i<copys.length;i++){
islist.add(new FileInputStream(copys[i]));
}
List<File> pastes = new ArrayList<File>(); //获得需要拷贝到的目标文件,位置为D:/1/目录
for(int i = 0 ;i<copys.length;i++){
pastes.add(new File("D:"+File.separator+"1"+File.separator+copys[i]
.getName().replace("java", "txt")));
}
List<OutputStream> oslist = new ArrayList<OutputStream>(); //字节输出流
for(int i = 0;i<copys.length;i++){
oslist.add(new FileOutputStream(pastes.get(i)));
}
for(int i = 0;i<copys.length;i++){
byte[] b = new byte[(int) copys[i].length()];
islist.get(i).read(b);
System.out.print("读取"+copys[i].getName()+"成功" +"----------------->");
oslist.get(i).write(b);
System.out.println("写入"+pastes.get(i).getName()+"成功" );
islist.get(i).close();
}
}
}
复制代码
作者:
T-l-H、小生
时间:
2015-10-10 18:05
好厉害,好厉害。。。。
作者:
LLLLL
时间:
2015-10-10 18:13
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2