黑马程序员技术交流社区
标题:
将指定目录下.java文件拷贝到另一个目的中,并将扩展...
[打印本页]
作者:
heimaheima123
时间:
2014-12-14 09:24
标题:
将指定目录下.java文件拷贝到另一个目的中,并将扩展...
将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt,这该怎么办呢,没思路??????
作者:
小小志
时间:
2014-12-14 10:18
1,先遍历该文件夹下的所有文件,找出是.Java文件
2,将这个文件存入到ArrayList 中
3,将这个ArrayList循环遍历的到文件,获取文件的绝对路径
还要文件名要用到s.substring(0,s.lastIndexof(.java))得到文件名(除掉.Java)
将使用输入输出流 输出流中文件名是变化的 是文件名(除掉.Java)+".txt"
4,这样就好了
我给你写个代码实现以下
作者:
小小志
时间:
2014-12-14 10:51
package itheima;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class Demo5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File dir=new File("e:\\sql");
ArrayList<File> list=new ArrayList<File>();
ArrayList<File> lists=selectlist(dir,list);
write2file(lists);
}
public static ArrayList<File> selectlist(File dir,ArrayList<File> list) {
File[] files=dir.listFiles();
for(int i=0;i<files.length;i++){
if(files[i].isDirectory()){
selectlist(files[i],list);
//System.out.println(files[i].getAbsolutePath());
}
else
if(files[i].getName().endsWith(".sql"))
list.add(files[i]);
//System.out.println(files[i].getAbsolutePath());
}
return list;
}
public static void write2file(ArrayList<File> lists){
try {
for(File f:lists){
String s=f.getAbsolutePath();
String name=f.getName();
String name1=name.substring(0,name.lastIndexOf(".sql"));
BufferedReader br=new BufferedReader(new FileReader(s));
System.out.println(s);
System.out.println(lists.size());
String s1="e:\\";
File file=new File(s1+name1+".txt");
BufferedWriter bw=new BufferedWriter(new FileWriter(file));
String len=null;
while((len=br.readLine())!=null){
bw.write(len);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
作者:
小马范
时间:
2014-12-14 11:57
看我得帖子吧, 里面有这一题
作者:
小马范
时间:
2014-12-14 12:01
看我得帖子吧,我的基础测试题,请参阅。。。
作者:
taany
时间:
2014-12-14 12:13
我也有这个题
作者:
Rain2692
时间:
2014-12-14 12:25
题目很简单啊,你是第几期的??
作者:
冥夜
时间:
2014-12-14 13:46
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
//复制一个文件夹下的所有java文件到另一目录,且将。java替换成。txt
public class CopyDir
{
public static void main(String[] args)
{
File src=new File("D:\\src");//想要复制的文件目录
File dest=new File("D:\\srcCopy");//目的文件目录
dest.mkdir();//创建目的文件夹
copyDir(src,dest);//复制文件并更改格式
}
private static void copyDir(File src, File dest)
{
File[] files=src.listFiles();//获取文件列表
for(File file:files)
{
if(file.isDirectory())//如果是文件夹
{
File f=new File(dest.getAbsolutePath()+"\\"+file.getName());//封装目的地对应的文件夹对象
f.mkdir();//创建目的地对应目录
copyDir(file,f);//递归展开目录
}
else//如果是文件
{
if(file.getName().endsWith(".java"))//如果是java文件
{
String path=dest.getAbsoluteFile()+"\\"+file.getName();//用字符串保存对应的文件路径
path=path.replaceAll(".java", ".txt");//将。java替换成。txt
File f=new File(path);//将该文件对象封装
copyFile(file,f);//复制文件
}
}
}
}
private static void copyFile(File src, File dest)
{
try
{
BufferedInputStream bi=new BufferedInputStream(new FileInputStream(src));//创建文件输入流
BufferedOutputStream bo=new BufferedOutputStream(new FileOutputStream(dest));//创建文件输出流
//写入数据
byte[] buf=new byte[1024];
int len=0;
while((len=bi.read(buf))!=-1)
{
bo.write(buf,0,len);
}
bi.close();
bo.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2