练习-Java输入输出之随机IO流之向文件中指定位置添加内容

第1关:练习-Java输入输出之随机IO流之向文件中指定位置添加内容

  • 任务描述
  • 编程要求
  • 测试说明

任务描述

本关任务:向给定文件中的指定位置添加给定内容。

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,向给定文件中的指定位置添加给定内容,具体要求如下:

  • 接收给定的一行字符串(如:/test/a.txt,23,hello。第一部分为给定文件路径,第二部分为插入位置,第三部分为插入内容);
  • 向文件中指定位置添加给定内容。

思路点拨:我们可以把插入点之后的内容先读取到临时文件,再把给定内容和临时文件中的内容依次追加到插入点之后。

创建临时文件方法:

  1. // 创建一个名为tmp的临时文件,内容为空
  2. File tmp=File.createTempFile("tmp",null);
  3. // 程序退出时删除临时文件
  4. tmp.deleteOnExit();

注意:给定字符串中的逗号为中文逗号。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

例: 测试输入:

  1. /test/a.txt,10,hello

预期输出(后台使用 cat 命令查看给定文件和其他文件内容产生的结果):

  1. dsff$%9sd*hellofsfdscsd
  2. Z23ssdfkdZGfnl%v9
  3. zhhelloe78FDE5@lloa
  4. QJh&hadoopdg897
  5. fds8sparkflink9!@#

注意:最后有一个空行。


开始你的任务吧,祝你成功!

import java.io.*;
import java.util.Arrays;
import java.util.Scanner;

public class FileTest {

    public static void main(String[] args) throws IOException {       
        Scanner scanner = new Scanner(System.in);    // 接收给定字符串
        String str = scanner.nextLine();
		// 请在Begin-End间编写完整代码
        /********** Begin **********/
        // 切割字符串
        String[] strs= str.split(",");
        // 创建一个临时文件
        File tem=new File(strs[0]);
		// 将插入点之后的内容保存到临时文件
        RandomAccessFile raf = new RandomAccessFile(tem,"rw");
        //设置指针位置
        raf.seek(Long.parseLong(strs[1]));
        //读取指针后面的字符数并返回
        byte[] by=new byte[1024]; 
        int len =raf.read(by);
               
        //上面读取后指针位置发生移动,再次设置指针位置
        raf.seek(Long.parseLong(strs[1]));
        // System.out.println();
        //先写入指定字符,在写人前面读取的s并指定写入长度,防止空格
        raf.write(strs[2].getBytes());
        raf.write(by,0,len);

        raf.close();
        // 将给定的内容和临时文件中的内容依次追加到原文件的插入点后
           
        /********** End **********/

    }
}

你可能感兴趣的:(Educoder—Java,java)