黑马程序员技术交流社区
标题:
复制文件
[打印本页]
作者:
尹善波
时间:
2012-8-6 02:18
标题:
复制文件
//复制一个文件夹里的java文件到另一个文件夹,费了好大事,还是出现这个问题,求高人解决
import java.io.*;
import java.util.*;
class JavaFileList1
{
public static void main(String[] args) throws IOException
{
File dir = new File("d:\\java");
// File dir1 = new File("d:\\jdg");
fileToList(dir);
}
public static void fileToList(File dir)throws IOException
{
File[] files = dir.listFiles();
for(File file : files)
{
String str=file.getName();//获取文件名称
if(!file.isDirectory()&&file.getName().endsWith(".java"))//文件不是路径而且".java"结尾为真
{
writeToFile(file,str);//传递文件和文件名
}
}
}
public static void writeToFile(File file,String str)throws IOException
{
File dir1 = new File("d:\\jad");
BufferedReader bufr = null;
BufferedWriter bufw = null;
String[] s=str.split(".java");//以“.java”为符号切割赋给数组s
System.out.println(s[0]);//s[0]为不带后缀名的文件名称
try
{
bufr = new BufferedReader(new FileReader(file));
bufw = new BufferedWriter(new FileWriter( "d:\\jdg\\"+s[0]+".txt"));//这里编译的时候没问题,但是一输出就出现异常
//
QQ截 .png
(2.23 KB, 下载次数: 15)
下载附件
2012-8-6 02:05 上传
String line = null;
while((line=bufr.readLine())!=null)
{
bufw.write(line);
bufw.newLine();
bufw.flush();
}
}
catch (IOException e)
{
throw e;
}
finally
{
try
{
if(bufw!=null)
bufw.close();
}
catch (IOException e)
{
throw e;
}
}
}
}
作者:
樊占江
时间:
2012-8-6 02:23
仔细看这句: "d:\\jdg\\"+s[0]+".txt"));
作者:
瞿乐
时间:
2012-8-6 02:51
public static void writeToFile(File file,String str)throws IOException
{
File dir1 = new File("e:\\jad");
//**1:***********如果文件不存在,则创建文件夹**************//
if(!dir1.exists()){
dir1.mkdirs();
}
//*************以上三行是我加上去的**********************
BufferedReader bufr = null;
BufferedWriter bufw = null;
//***:2:******************以下两行注释掉了不需要那么麻烦***************
//***String[] s=str.split(".java");//以“.java”为符号切割赋给数组s
//***System.out.println(s[0]);//s[0]为不带后缀名的文件名称
try
{
bufr = new BufferedReader(new FileReader(file));
// ** bufw = new BufferedWriter(new FileWriter( "d:\\jdg\\"+s[0]+".txt"));//这里编译的时候没问题,但是一输出就出现异常
//3:上面改了改了一下,路径问题,改成下面的就没有错误了。
//如果 d:\\jdg\不存在,会出现异常。
bufw = new BufferedWriter(new FileWriter( new File("e:/jad/"+str)));
这是我在原来基础上,该了三个地方,有标注的,楼主可以看一下。 其余代码则是是原封不动的。
其实找楼主这么写,感觉不太好,只能拷贝一个文件夹下的.java文件,如果目录下有目录,其中还有.java文件就不能拷贝了
要递归。还有就是感觉楼主写的代码思路不清晰,如果多写两次,相信一定会写得很好的。
作者:
王程
时间:
2012-8-6 08:05
从错误提示来看,问题应该是File dir1 = new File("d:\\jad"),中的d:\\jad这个目录不存在造成的,所以要加上一句判断语句,如果这个目录不存在,就创建一个。
作者:
hello world
时间:
2012-8-6 08:58
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopy {
public static void main(String[] args) throws IOException {
//生成输入文件的输入流对象
FileInputStream fin = new FileInputStream("d:/test/a.txt");
//生成输出文件的输出流对象
FileOutputStream fout = new FileOutputStream("d:/test/b.txt");
byte[] buff = new byte[256]; //定义一个永固暂存数据的byte数组
int len = 0; //每次读取数据的长度
//循环读取到buff中,如果文件到底,则读取数据的长度小于0
while ((len = fin.read(buff)) > 0) {
fout.write(buff, 0, len); //把数据一次写进输出文件中
}
fin.close(); //关闭输入流
fout.close(); //关闭输出流
}
}
供参考,写代码要思路清晰,还有就是写文件分隔符是可以写成/这个,就不用转义了或者调用文件分割符那个属性。
作者:
尹善波
时间:
2012-8-6 14:28
已解决,谢谢大家了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2