import javaioFile;
import javaioFileInputStream;
import javaioFileOutputStream;
import javautilScanner;
public class KKKKKKKKKKK {
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(Systemin);
Systemoutprintln("请输入U盘路径:");
String uDisk = scannextLine();
File file = new File(uDisk);
if (fileexists() && fileisDirectory()) {
Systemoutprintln("请输入目标路径:");
String targetFolder = scannextLine();
File target = new File(targetFolder);
if (!targetexists()) {
if (!targetmkdir()) {
throw new Exception("创建目标目录失败");
}
} else {
if (!targetisDirectory()) {
throw new Exception("与目标目录同名的文件已经存在");
}
}
File temp[] = filelistFiles();
if (temp != null && templength > 0) {
for (int i = 0, length = templength; i < length; i++) {
if (!temp[i]isDirectory()) {
String fileName = temp[i]getName();
File t = new File(targetFolder+Fileseparator+fileName);
if (!tcreateNewFile()) {
throw new Exception("创建输出文件失败");
}
FileOutputStream out = new FileOutputStream(t);
FileInputStream in = new FileInputStream(temp[i]);
byte[] buffer = new byte[256];
while (inread(buffer) > 0) {
outwrite(buffer);
}
}
}
}
}
}
}
另外如果你的U盘上有目录,并且也希望考过去的话,要加一个递归函数 ,命令函输入U盘所在的盘符:比如:e:\\,目标目录比如:c:\\abc
import javaioBufferedReader;
import javaioBufferedWriter;
import javaioFile;
import javaioFileInputStream;
import javaioFileOutputStream;
import javaioIOException;
import javaioInputStreamReader;
import javaioOutputStreamWriter;
public class mytxt {
public static void main(String[] args) throws IOException {
String infile = args[1]toString(); // 输入文件
String fileout = "resulttxt"; // 输出路径
try {
// 输出结果
File f = new File(fileout);
FileOutputStream fout = new FileOutputStream(f);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fout));
// 输入文件
BufferedReader br = null;
File file = new File(infile);
if (fileexists()) {
FileInputStream fin = new FileInputStream(file);
br = new BufferedReader(new InputStreamReader(fin));
}
String str = brreadLine();
int n = 0;
while (str != null && !strisEmpty()) {
n++;
str = brreadLine();
bwwrite(str + "\n");
}
bwflush();
bwclose();
brclose();
} catch (Exception e) {
eprintStackTrace();
}
}
}
[还望自行修改,感觉Swing 很鸡肋 。]
造成乱码有很多的原因:比如文件编码等
但是这段程序乱码是因为字符流和字节流混用造成的乱码
读取是用的带缓冲区的字符流 BufferedReader 这是按字符读入
写入磁盘是的是字节流 FileOutputStream 这是按字节写出
解决办法,配套使用,字符流和字节流
一:下面使用字节流复制文本
import javaioFile;import javaioFileInputStream;
import javaioFileOutputStream;
public class Demo {
public static void main(String[] args) throws Exception {
File file = new File("c:\\123txt");
FileOutputStream fos = new FileOutputStream(new File("C:\\123COPYtxt"));
FileInputStream br = new FileInputStream(file);
int len;
while((len=brread())!=-1){
foswrite(len);
}
brclose();
fosclose();
}
}
二:下面使用字符流复制文本
import javaioBufferedReader;import javaioBufferedWriter;
import javaioFile;
import javaioFileReader;
import javaioFileWriter;
public class Demo2 {
public static void main(String[] args) throws Exception {
File file = new File("c:\\123txt");
BufferedReader br = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("c:\\123copytxt")));
//使用BufferedReader的时候,按照习惯,一般不会使用brread()方法,
//大家最喜欢用BufferedReader,因为他每次可以读取一行,非常方便
String temp;
while((temp=brreadLine())!=null){
bwwrite(temp);//每次写入一行
bwnewLine();//并且进行换行
}
brclose();
bwclose();
}
}
import javaioBufferedReader;
import javaioFile;
import javaioFileReader;
import javaioFileWriter;
import javaioIOException;
public class FileCopy {
static final String fromeFile = "c:\\test1txt";
static final String toFile = "c:\\test2txt";
public static void main(String args[]) {
try {
BufferedReader read = new BufferedReader(new FileReader(new File(fromeFile)));
FileWriter write = new FileWriter(new File(toFile), true);
String temp;
while((temp = readreadLine())!=null){
writewrite(temp);
}
writeclose();
readclose();
Systemoutprintln("内容已从"+fromeFile+"复制追加到"+toFile);
} catch (IOException e) {
eprintStackTrace();
}
}
}
电脑里必须要有jre环境才可以的
安装JDK,注意更改安装目录。
安装完成后开始配置环境变量,右击我的电脑,点击属性。
在出现的对话框中选择高级系统设置。
在出现的对话框中选择环境变量。
新建名为“classpath”的变量名,变量值为“;%JAVA_HOME%\lib;%JAVA_HOME%\lib\toolsjar “(注意是”“里的内容)直接复制即可。
新建名为”JAVA_HOME“的变量名,变量值为之前安装jdk的目录,例如本人的为”E:\Program Files\Java\jdk170_40“。
在已有的系统变量”path“的变量值加上”;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin“(注意,每个变量值是以”;“隔开,变量值开头的分号就起这个作用)自此配置完成。
这是一个事实吧!!!
1复制自己的东西。那这样是无可厚非的,毕竟是自己的嘛,而且复制黏贴另外的一种解释,并非是贬义的意思,而是说你能充分的利用自己先前学过的知识来进行快速开发,这样不是很OK?而且,现在大牛的程序员,它的硬盘里
有各种类型的系统、网站,你只要叫他弄,几下就搞一个给你,这样不是很牛吗?当然
这是好事。
2是贬义的意思,为什么呢?说现在很多程序员不懂的创新嘛,比如说现在javascript这个东东,很多人都不学它的具体语法,因为很多网上都有现成的呢。你只需要知道怎么用,然后在网上百度就OK了。。。
所以。。你懂的。
程序如下:
--------------------------------------------------------------
import javaioFileReader;
import javaioFileWriter;
import javaioIOException;
import javaioFileNotFoundException;
public class copy {
public static void main (String args[]) {
if (argslength < 2) {
Systemoutprintln("请按以下格式输入:java copy 原路径 目标路径");
return;
}
try {
FileReader reader = new FileReader(args[0]);
FileWriter writer = new FileWriter(args[1]);
int c = -1;
while ((c = readerread()) != -1)
writerwrite(c);
readerclose();
writerclose();
} catch (FileNotFoundException fnfe) {
Systemoutprintln("原文件不存在!");
return;
} catch (IOException ioe) {
Systemoutprintln("拷贝失败!");
return;
}
Systemoutprintln("拷贝成功!");
}
}
-----------------------------------------------------------------
运行程序时输入如下命令:
java copy 原文件路径 新文件路径
-----------------------------------------------------------------
截图如下:
package comqwcopy;
import javaioBufferedInputStream;
import javaioBufferedOutputStream;
import javaioFile;
import javaioFileInputStream;
import javaioFileNotFoundException;
import javaioFileOutputStream;
import javaioIOException;
import javautilArrayList;
import javautilArrays;
import javautilCollections;
import javautilList;
import orgapachetoolszipZipEntry;
import orgapachetoolszipZipOutputStream;
public class JCopy {
private static List<String> exts;
private static boolean empty;
private static boolean zip;
public static void main(String[] args) {
if(argslength < 2){
Systemoutprintln("usage : JCopy -from -to [-ext ] [-empty] [-zip]");
return;
}
String from = args[0];
String to = args[1];
for (int i = 0; i < argslength; i++){
if(args[i]equals("-ext")){
//指定文件扩展名,可以指定多个,以逗号分开
exts = new ArrayList<String>();
CollectionsaddAll(exts, args[i+1]split(","));
}
if(args[i]equals("-empty")){
empty = false;
}
if(args[i]equals("-zip")){
zip = true;
}
}
File fFile = new File(from)getAbsoluteFile();
File tFile = new File(to)getAbsoluteFile();
if(!fFileexists()){
Systemoutprintln("from file not found");
Systemoutprintln("usage : JCopy from to");
return;
}
//如果指定文件扩展名,则待拷贝的必须是文件而不能是目录
if(exts != null && extssize() != 0){
if(fFileisDirectory()){
Systemoutprintln("指定了文件扩展名,则待拷贝的必须是文件");
return;
}
}
if(tFiletoString()indexOf("") == -1){
//目标文件参数是目录,则建立对应目录,没有文件扩展名,则看成是目录
tFilemkdirs();
}else{
//如果目标文件是文件,则生成文件所需的目录
File dir = new File(tFiletoString()substring(0,tFiletoString()lastIndexOf("\\")));
Systemoutprintln("make dirs: "+dirtoString());
dirmkdirs();
if(exts != null && extssize() != 0){
extsadd(tFiletoString()substring(tFiletoString()indexOf("")+1));
}
}
if(exts != null && !extsisEmpty()){
for (String ext : exts) {
copy(fFile,tFile,ext);
}
}else{
copy(fFile,tFile,null);
}
}
public static void copy(File fFile, File tFile,String ext){
if(fFileisFile()){
if(tFileisDirectory()){
if(ext != null && !extisEmpty()){
tFile = new File(tFiletoString() + Fileseparator + fFilegetName()replaceAll("\\\\w+", ""+ext));
}else{
tFile = new File(tFiletoString()+Fileseparator+fFilegetName());
}
if(zip){
copyZipFile(fFile, new File(tFiletoString()replaceAll("\\\\w+", "zip")));
}else{
copyFile(fFile,tFile);
}
}else{
if(ext != null && !extisEmpty()){
tFile = new File(tFiletoString()replaceAll("\\\\w+", ""+ext));
}
if(zip){
copyZipFile(fFile,new File(tFiletoString()replaceAll("\\\\w+", "zip")));
}else{
copyFile(fFile, tFile);
}
}
}
//如果是目录,则逐层建立目录
if(fFileisDirectory()){
///创建目录
tFilemkdir();/
File[] files = fFilelistFiles();
Systemoutprintln(ArraystoString(files));
if(!empty){
if(ArraysasList(files)isEmpty()){
return;
}
}
tFilemkdirs();
for (File file : files) {
copy(new File(fFiletoString()+Fileseparator+filegetName()),new File(tFiletoString()+Fileseparator+filegetName()),null);
}
}
}
//生成压缩文件
private static void copyZipFile(File fFile, File tFile) {
BufferedInputStream in = null;
BufferedOutputStream out = null;
ZipOutputStream zipout = null;
try{
in = new BufferedInputStream(new FileInputStream(fFile));
out = new BufferedOutputStream(new FileOutputStream(tFile));
zipout = new ZipOutputStream(out);
try{
zipoutputNextEntry(new ZipEntry(fFilegetName()));
byte[] b = new byte[4096];
int n;
while((n = inread(b)) != -1){
zipoutwrite(b,0,n);
}
zipoutcloseEntry();
}catch(Exception e){
eprintStackTrace();
}finally{
try {
inclose();
outclose();
zipoutclose();
} catch (IOException e) {
eprintStackTrace();
}
}
} catch(FileNotFoundException e){
Systemerrprintln("文件未找到");
eprintStackTrace();
}
}
//拷贝文件
private static void copyFile(File fFile, File tFile) {
BufferedInputStream in = null;
BufferedOutputStream out = null;
//如果是文件则直接复制
try {
in = new BufferedInputStream(new FileInputStream(fFile));
out = new BufferedOutputStream(new FileOutputStream(tFile));
try{
byte[] b = new byte[4096];
int i = 0;
while((i = inread(b)) != -1){
outwrite(b, 0, i);
}
outflush();
}catch (Exception e) {
// TODO: handle exception
} finally{
try {
inclose();
outclose();
} catch (IOException e) {
eprintStackTrace();
}
}
} catch (FileNotFoundException e) {
Systemoutprintln("文件未找到"+egetMessage());
eprintStackTrace();
}
}
}
楼主拿去看看,看还有什么问题。
以上就是关于求大神编写一个JAVA程序能自动复制U盘上的文件,给代码.全部的内容,包括:求大神编写一个JAVA程序能自动复制U盘上的文件,给代码.、利用文件输入/输出流编写一个实现文件复制的java应用程序,源文件名和目标文件名、为什么用JAVA写的一个复制文本文档的程序复制出来文本文档乱码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)