aUgMan1 2019-11-13 21:57 采纳率: 83.3%
浏览 1087
已采纳

java里怎么将一个文件保存至另外一个文件里?

小弟在做一个程序时遇到个问题,将文件内容读出并显示到屏幕上,同时复制文件内容到另一个文件中。

我的第一步是用户输入一个txt文档的绝对路径然后再将它的内容在屏幕上显示出来。
这一段代码小弟敲完后可以运行并达到要求。

但是在第二个目标(将这个txt文档复制至新的路径里)遇到问题了,我不知道怎么
让程序可以读取用户刚刚输入的绝对路径再将其复制到一个新的目录里面,

我只能做到在程序里先打好复制文件的原路径与我想要将这个文件复制到哪个目录里

所以我的第一步和第二步脱节了,请大神们帮帮忙

package shiyan3;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.util.Scanner;

public class Notepad {
    private static String filePath;
    private static String message ="";
    public static void main(String[] args) throws Exception {
        Scanner sc =new Scanner(System.in);
        System.out.println("1:打开文件  2:复制文件 3:退出");
        while (true) {
            System.out.println("请输入指令");
            int command = sc.nextInt();
            switch (command) {
            case 1:
                openFile();
                break;
            case 2:
                copyFile();
                break;
            case 3:
                exit();
                break;
                default:
                    System.out.println("输入错误");
            }
        }
    }

    private static void openFile() throws Exception {
        message = "";
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入打开文件位置:");
        filePath =sc.next();
        if (filePath!= null && !filePath.endsWith(".txt")) {
            System.out.println("请选择文本文件!");
            return;
        }
        FileReader in = new FileReader(filePath);
        char [] charArray =new char[1024];
        int len =0 ;
        StringBuffer sb = new StringBuffer();
        while ((len=in.read(charArray)) !=-1) {
            sb.append(charArray);
        }
        message =sb.toString();
        System.out.println("打开文件内容"+"\r\n"+message);
        in.close(); 
    }
    public static void copyFile() throws Exception {
        FileReader reader =new FileReader("D://JAVA//chapter01//src//shiyan3//text.txt");
        BufferedReader br = new BufferedReader (reader);
        FileWriter writer = new FileWriter("D://JAVA//chapter01//src//shiyan3//text1.txt");
        BufferedWriter bw = new BufferedWriter(writer);
        String str;
        while ((str = br.readLine()) !=  null) {
            bw.write(str);
            bw.newLine();
        }
        br.close();
        bw.close();
   System.out.println("复制已经完成啦");

    }

    private static void exit() {
        System.out.println("您已退出系统!");
    }
}


  • 写回答

1条回答

  • 毕小宝 博客专家认证 2019-11-14 09:23
    关注

    第一步由用户输入文件路径,那么就可以直接读取该文件的内容,然后写入到一个新文件的话,文件目录可以程序固定就可以了。
    楼主说的第二步将用户输入的路径对应的文件拷贝到指定文件,应该用 openFile 一样接收一个 filePath 信息,那么 copyFile 的 Reader 就用用户输入的路径就可以了,这里你写固定了,是不妥当的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?