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 就用用户输入的路径就可以了,这里你写固定了,是不妥当的。

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

报告相同问题?

悬赏问题

  • ¥15 C# P/Invoke的效率问题
  • ¥20 thinkphp适配人大金仓问题
  • ¥20 Oracle替换.dbf文件后无法连接,如何解决?(相关搜索:数据库|死循环)
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理