关于随机访问文件类RandomAccessFile中write(byte[ ] b)方法的一个疑问

「已注销」 2019-05-13 10:47:53
try {
FileWriter out = new FileWriter(file); // 通过构造方法FileWriter(File file),创建file的文件字符输入流
out.write("abcdefxyijklmn");
out.close();
System.out.println("文件写入成功");
} catch (IOException e) {
System.out.println("文件写入失败");
e.printStackTrace();
return;
}

try {
RandomAccessFile raf = new RandomAccessFile(file,"rw"); // 通过构造方法RandomAccessFile(File file, String mode),以可读可写”rw”的方式创建file的随机访问文件对象
raf.seek(6); // 使用seek(long pos)方法,将raf的读写指针指向字符 'x' ,文件的pos是从0开始的。
raf.write("gh".getBytes());// 使用raf的write(byte[] b)方法,将字符串"gh"替换文件中的"xy"
raf.close();
System.out.println("文件修改成功");
} catch (Exception e) {
System.out.println("文件修改失败");
e.printStackTrace();
return;
}
...全文
134 点赞 收藏 2
写回复
2 条回复
十八道胡同 2019年05月13日
package com.demo;

import java.io.FileWriter;
import java.io.IOException;
import java.io.RandomAccessFile;

public class Java_0_0_13 {

    public static void main(String[] args) {

        String file = "d:\\1.txt";
        try {
            FileWriter out = new FileWriter(file);  //  通过构造方法FileWriter(File file),创建file的文件字符输入流
            out.write("abcdefxyijklmn");
            out.close();
            System.out.println("文件写入成功");
        } catch (IOException e) {
            System.out.println("文件写入失败");
            e.printStackTrace();
            return;
        }

        try {
            RandomAccessFile raf = new RandomAccessFile(file, "rw"); // 通过构造方法RandomAccessFile(File file, String mode),以可读可写”rw”的方式创建file的随机访问文件对象
            raf.seek(6);  // 使用seek(long pos)方法,将raf的读写指针指向字符 'x' ,文件的pos是从0开始的。
            raf.write("gh".getBytes());// 使用raf的write(byte[] b)方法,将字符串"gh"替换文件中的"xy"
            raf.close();
            System.out.println("文件修改成功");
        } catch (Exception e) {
            System.out.println("文件修改失败");
            e.printStackTrace();
            return;
        }

        try {
            RandomAccessFile raf = new RandomAccessFile(file, "rw"); // 通过构造方法RandomAccessFile(File file, String mode),以可读可写”rw”的方式创建file的随机访问文件对象
            String line = raf.readLine();
            line = line.replace("i", "xy");
            System.out.println(line);
            raf.seek(0);
            raf.write(line.getBytes());
            raf.close();
            System.out.println("文件修改成功");
        } catch (Exception e) {
            System.out.println("文件修改失败");
            e.printStackTrace();
            return;
        }
    }


}
回复 点赞
「已注销」 2019年05月13日
这是一部分代码,15行的write()方法为什么能做到替换,即最后的结果是a b c d e f g h i j k l m n,若想做到增加,即输出结果是a b c d e f g h x y j k l m n应该怎么做呢
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告