文件夹F:\\txt中有很多txt文件,用java随机读取一个txt文件,然后将之复制粘贴到D:\\txt中。

如题:文件夹F://txt中有很多txt文件,用java随机读取一个txt文件,然后将之复制粘贴到D://txt中。请问代码怎么写?给出可行代码即可给悬赏分,另外再给20分。条件是java代码。

import java.io.File;

public class FileTest {

public static void main(String[] args) {
File files = new File("F:\\txt\\");
File file[] = files.listFiles();//获得目录中的文件及子目录信息
int i = (int) (Math.random()*file.length);
fun(file,i);
}
public static void fun(File file[],int i){
if(file[i].exists()){//如果文件存在
String name = file[i].getName();//获取文件名
if(file[i].isFile()&&name.endsWith(".txt")){ //如果是文件并且后缀名为.txt
File dest = new File("D:\\txt\\"+file[i].getName());
file[i].renameTo(dest);
}
else{
int j = (int) (Math.random()*file.length);
fun(file,j);
}
}else{
int j = (int) (Math.random()*file.length);
fun(file,j);
}
}
}追问

我想问一下复制过来的文件可以进行一下重命名吗?

追答

可以的,File dest = new File("D:\\txt\\"+新文件名);

追问

可以只是复制,而不是剪切吗?

追答

加一个方法对文件进行读写操作。具体看代码

        // 实现文件复制
public static void copyFile(File file1, File file2) {
try {
int byteread = 0;
if (file1.exists()) {// 如果文件存在
InputStream instream = new FileInputStream(file1); // 负责文件的读取
FileOutputStream fos = new FileOutputStream(file2); // 负责文件的写入
byte[] buffer = new byte[1024];
while ((byteread = instream.read(buffer)) != -1) {
fos.write(buffer, 0, byteread);
}
instream.close();
}
} catch (Exception e) {
System.out.println("复制文件操作出错!");
e.printStackTrace();
}
}

 在上面的方法调用就行。具体就是把file[i].renameTo(dest);这句代码改成copyFile(file[i],dest);

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-07-21
public static void copyFile(String rootPath, String copyToPath) throws IOException {
File rootPathFile = new File(rootPath);
File copyToPathFile = new File(copyToPath);

if (!rootPathFile.exists()) {
System.err.println(rootPath + " 目录不存在");
return;
}

if (!copyToPathFile.exists()) {
boolean b = copyToPathFile.mkdirs();// 创建目录
if (!b) {
System.err.println(copyToPath + " 创建目录失败");
return;// 创建目录失败直接返回
}
}
File[] txtFiles = rootPathFile.listFiles(new FilenameFilter() {

@Override
public boolean accept(File dir, String name) {
if (name.toLowerCase().endsWith("txt")) {
// 筛选txt类型文件
return true;
}
return false;
}
});

if (txtFiles != null) {
Random r = new Random();
int i = r.nextInt(txtFiles.length);// 随机获取0到txtFiles.length之间的数字
File copyFile = txtFiles[i];
File newFile = new File(copyToPath + "\\" + copyFile.getName());
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(copyFile), "UTF-8"));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newFile), "UTF-8"));
String tmp = null;
while (true) {
tmp = br.readLine();
if (tmp == null) {
break;
}
bw.write(tmp);
bw.write("\n");// 写入换行符
}
if (bw != null) {
bw.flush();
bw.close();
}
if (br != null) {
br.close();
}
System.out.println("操作执行完毕");
}

}

第2个回答  2013-07-11

代码给你贴下面,望采纳

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;

public class FileUtil
{
    public static void main(String[] args)
    {
        String path1 = "F:/abc.txt";
        String path2 = "D:/abc.txt";
        fileUtil(path1, path2);
    }

    /**
     * 复制单个文件
     * 
     * @param oldPath
     *            String 原文件路径 如:F:/abc.txt
     * @param newPath
     *            String 复制后路径 如:D:/abc.txt
     * @return boolean
     */
    public static void fileUtil(String oldPath, String newPath)
    {
        try
        {
            int bytesum = 0;
            int byteread = 0;
            File oldfile = new File(oldPath);
            if (oldfile.exists())
            { // 文件存在时
                InputStream inStream = new FileInputStream(oldPath); // 读入原文件
                FileOutputStream fs = new FileOutputStream(newPath);
                byte[] buffer = new byte[1444];
                int length;
                while ((byteread = inStream.read(buffer)) != -1)
                {
                    bytesum += byteread; // 字节数 文件大小
                    System.out.println(bytesum);
                    fs.write(buffer, 0, byteread);
                }
                inStream.close();
            }
        } catch (Exception e)
        {
            System.out.println("复制单个文件操作出错");
            e.printStackTrace();

        }

    }

}

第3个回答  2013-07-11
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;
import java.util.Random;

public class RandomFileDemo {

    public static void main(String[] args) {
        String oldPath = "D:/Program Files";
        String newPath = "E:";
        randomCopyFile(oldPath, newPath);
    }

    /**
     * 随机复制文件
     * @param oldPath
     * @param newPath
     */
    static void randomCopyFile(String oldPath, String newPath) {
        BufferedReader reader = null;
        BufferedWriter writer = null;
        try {
            File file = new File(oldPath);
            File[] files = file.listFiles();// 遍历文件夹
            ArrayList<String> list = new ArrayList<String>();// 存储txt文件名称
            for (int i = 0; i < files.length; i++) {// 遍历txt文件,将文件名称放入集合
                String fileName = files[i].getName();
                if (fileName.endsWith(".txt")) {
                    list.add(fileName);
                }
            }
            Random random = new Random();
            String fileName = list.get(random.nextInt(list.size()));// 取随机文件名称
            file = new File(oldPath + File.separator + fileName);// 打开文件
            reader = new BufferedReader(new FileReader(file));
            String line = "";
            StringBuffer sb = new StringBuffer();
            while ((line = reader.readLine()) != null) {// 生成新的文本字符串
                sb.append(line).append("\n");
            }
            String newFile = newPath + File.separator + fileName;// 新文件路径
            System.out.println("生成新文件路径:" + newFile);
            file = new File(newFile);// 打开文件
            if (!file.exists()) file.createNewFile();// 创建新文件
            writer = new BufferedWriter(new FileWriter(file));
            writer.write(sb.toString());// 写数据
            writer.flush();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {// 关闭流
                if (reader != null) reader.close();
                if (writer != null) writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }
}

第4个回答  2013-07-11
package com;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;

public class FileOperator {

public static void main(String[] args) {

String pathD = "D:/txt";
String pathF = "F:/txt";

File directoryF = new File(pathF);
File[] filesF = directoryF.listFiles();

// 随机生成文件数组下标,用于随机选择一个文件
Random r = new Random();
int filesFCount = filesF.length;
int index = r.nextInt(filesFCount);
// 拷贝到D盘的文件
File copyedFile = new File(pathD +"/"+ filesF[index].getName());

// 利用缓冲文件流方法进行文件复制
try {
// 读文件流
FileReader fileReader = new FileReader(filesF[index]);
BufferedReader bufferedReader = new BufferedReader(fileReader);
// 写文件流
FileWriter fileWriter = new FileWriter(copyedFile);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
// 对每一行内容进行复制
String bufferString = "";
while((bufferString = bufferedReader.readLine())!=null){
bufferedWriter.write(bufferString);
}

// 关闭文件流
bufferedWriter.close();
fileWriter.close();
bufferedReader.close();
fileReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

文件夹F:\\\\txt中有很多txt文件,用java随机读取一个txt文件,然后将之...
import java.io.File;public class FileTest { public static void main(String[] args) { File files = new File("F:\\\\txt\\\\");File file[] = files.listFiles();\/\/获得目录中的文件及子目录信息 int i = (int) (Math.random()*file.length);fun(file,i);} public static void fun...

java中如何从txt文件中一行一行读取汉字,再存到另一txt文件中
首先用FileReader fileReader=new FileReader(路径)来创建一个节点流,然后用BufferedReader reader=new BufferedReader(fileReader),以BufferederReader处理流来包装这个节点流,然后调用 BufferedReader类里面的readLine()方法就可以一行一行地读了。至于存到另一个txt文件中,你把上面输入流读到的东西放到一个...

Java如何实现读取一个txt文件的所有内容,然后提取所需的部分并把它写 ...
代码如下:import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;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读取TXT文件,然后截取字符串
import java.io.File;import java.io.FileNotFoundException;import java.util.Arrays;import java.util.Scanner;public class $ { public static void main(String[] args) { try { Scanner in = new Scanner(new File("D:\/a.sql")); while (in.hasNextLine()) { String str...

如何用java实现读取txt文件并对其内容进行处理?java菜菜鸟,求好心人来...
public static void readFileByRandomAccess(String fileName) { RandomAccessFile randomFile = null; try { System.out.println("随机读取一段文件内容:"); \/\/ 打开一个随机访问文件流,按只读方式 randomFile = new RandomAccessFile(fileName, "r"); \/\/ 文件长度,字节数 long fileLength = randomFile.leng...

java如何实现搜索功能。比如,输入txt就能搜索出这个文件夹内所有txt格 ...
public class FileDemo{public static void main(String[] args)throws Exception{ \/\/第一个参数是文件路径,第二个参数是要搜索的文件扩展名getFile("D:\\\\JavaDemo",".txt");}private static void getFile(String pathName, final String endsWith)throws Exception{File file = new File(pathNam...

如何用Java读取一个txt文件,并将文件内容保存到String类型的变量中?
out.println(fileContent);\\x0d\\x0a}\\x0d\\x0a\\x0d\\x0a\/\/参数string为你的文件名\\x0d\\x0aprivatestaticStringreadFileContent(StringfileName)throwsIOException{\\x0d\\x0a\\x0d\\x0aFilefile=newFile(fileName);\\x0d\\x0a\\x0d\\x0aBufferedReaderbf=newBufferedReader(newFileReader(file...

java读取文本文件txt时候的换行问题
String file = "D:\/test\/test.txt";bre = new BufferedReader(new FileReader(file));\/\/此时获取到的bre就是整个文件的缓存流 while ((str = bre.readLine())!= null) \/\/ 判断最后一行不存在,为空结束循环 { System.out.println(str);\/\/原样输出读到的内容 };备注: 流用完之后必须close...

怎样用JAVA编写把一个文件夹中的文件复制到一个指定的文件夹用完文件后...
最近导师让我用JAVA做一个项目,可是我没学过JAVA,希望JAVA高手帮小底解决这个问题怎样用JAVA编写把一个文件夹中的文件复制到一个指定的文件夹用完文件后再把它还原到原文件夹希望是JA... 最近导师让我用JAVA做一个项目,可是我没学过JAVA,希望JAVA高手帮小底解决这个问题 怎样用JAVA编写把一个文件夹中的文件复制...

java文件复制(bufferedreader读取一个文件内容,用bufferedwriter 写入...
BufferedReader bre = null;OutputStreamWriter pw = null;\/\/定义一个流 try { String file = "D:\/test\/test.txt";bre = new BufferedReader(new FileReader(file));\/\/此时获取到的bre就是整个文件的缓存流 pw = new OutputStreamWriter(new FileOutputStream(“D:\/test.txt”),"GBK");\/\/...

相似回答