复制文件到指定文件夹并修改其指定位置数据

复制文件到指定文件夹并修改其指定位置数据

//import java.io.*; 
public static void main(String[] args) {
        //源文件
        String sourceFile = "E:\\ss\\index.html";
        //目标文件夹
        String destinationFolder = "E:\\destination";
        // 需要替换的行号
        int lineNumber = 11;
        // 新的内容
        String newContent = "测试修改内容";
        try {
            //创建文件夹
            File directory = new File(destinationFolder);
            if (!directory.exists()){
                directory.mkdir();
            }
            //复制文件
            File file = new File(sourceFile);
            FileInputStream fis = new FileInputStream(file);
            File newFile = new File(destinationFolder, file.getName());
            FileOutputStream fos = new FileOutputStream(newFile);

            byte[] buffer = new byte[4096];
            int bytesRead;
            while ((bytesRead = fis.read(buffer)) != -1) {
                fos.write(buffer, 0, bytesRead);
            }

            fis.close();
            fos.close();

            System.out.println("文件复制成功!");

            StringBuilder fileContent = new StringBuilder();
            try (BufferedReader reader = new BufferedReader(new FileReader(newFile))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    fileContent.append(line).append(System.lineSeparator());
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            // 查找需要替换的行,并将其修改为新的内容
            String[] lines = fileContent.toString().split(System.lineSeparator());
            if (lineNumber >= 1 && lineNumber <= lines.length) {
                lines[lineNumber - 1] = newContent;
            } else {
                System.out.println("Invalid line number.");
            }
            // 将修改后的内容写入文件
            try (BufferedWriter writer = new BufferedWriter(new FileWriter(newFile))) {
                for (String line : lines) {
                    writer.write(line);
                    writer.write(System.lineSeparator());
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值