JAVA使用随机流获取txt中任意字符

随机流实现有一个文件abc.txt,有内容 abcde 获取里面的 bc 与 ce打印到控制台

要实现从文件中获取随机字符并打印到控制台,可以使用Java的随机访问文件流(RandomAccessFile)来实现。下面是一个示例代码:

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

public class RandomAccessFileExample {
    public static void main(String[] args) {
        try {
            RandomAccessFile file = new RandomAccessFile("abc.txt", "r");
            long fileSize = file.length();
            int startPos = (int) (Math.random() * (fileSize - 1));
            
            // 移动到随机位置
            file.seek(startPos);
            
            // 读取两个字符
            char[] chars = new char[2];
            chars[0] = (char) file.readByte();
            chars[1] = (char) file.readByte();
            
            // 打印字符到控制台
            System.out.println(chars[0] + "" + chars[1]);
            
            file.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,首先创建一个RandomAccessFile对象来打开abc.txt文件,并获取文件的大小。然后,使用Math.random()方法生成一个随机的起始位置,该位置在文件大小范围内。接下来,使用file.seek()方法将文件指针移动到随机位置。然后,使用file.readByte()方法读取两个字节,并将其转换为字符。最后,将这两个字符打印到控制台。

请注意,这个示例假设abc.txt文件是文本文件,其中的内容是ASCII字符。如果文件中的内容是Unicode字符或者其他编码方式,需要适当地修改代码来处理。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7674312
  • 这篇博客也不错, 你可以看下java 从txt文本中随机获取名字
  • 除此之外, 这篇博客: 使用java根据要查找txt文件的内容,在查找到值之后再末尾添加自己的内容中的 main方法 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    是的,您的理解是正确的。您希望使用Java的随机访问流(RandomAccessFile)来获取指定字符串,并从一个名为abc.txt的文件中提取字符串"bc"和"ce"并打印到控制台上。

    以下是实现这个过程的步骤:

    1. 创建一个RandomAccessFile对象,并将文件名设置为abc.txt:
    RandomAccessFile file = new RandomAccessFile("abc.txt", "r");
    
    1. 定义一个用于存储提取结果的字符串变量:
    String result = "";
    
    1. 使用RandomAccessFile的seek()方法将文件指针定位到字符串"bc"的起始位置:
    file.seek(file.length() - 2); // 定位到文件末尾的前两个字符
    
    1. 使用RandomAccessFile的read()方法读取字符串"bc":
    result += (char)file.read(); // 将读取的字符添加到结果字符串中
    result += (char)file.read(); // 将读取的字符添加到结果字符串中
    
    1. 使用同样的步骤提取字符串"ce",将文件指针定位到起始位置并读取对应的字符:
    file.seek(2); // 定位到文件的第三个字符
    result += (char)file.read(); // 将读取的字符添加到结果字符串中
    result += (char)file.read(); // 将读取的字符添加到结果字符串中
    
    1. 关闭RandomAccessFile对象:
    file.close();
    
    1. 最后,将提取的字符串打印到控制台上:
    System.out.println(result);
    

    完整的代码如下所示:

    import java.io.RandomAccessFile;
    
    public class RandomAccessFileExample {
        public static void main(String[] args) {
            try {
                RandomAccessFile file = new RandomAccessFile("abc.txt", "r");
                String result = "";
    
                file.seek(file.length() - 2);
                result += (char)file.read();
                result += (char)file.read();
    
                file.seek(2);
                result += (char)file.read();
                result += (char)file.read();
    
                file.close();
    
                System.out.println(result);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

    请注意,以上代码仅适用于文件内容固定的情况。如果文件内容会发生变化,需要更复杂的逻辑来定位和提取想要的字符串。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^