java - 尝试在对象类中创建一个将文本文件划分为多个部分的函数(Java)

标签 java file text directory

我试图将一个文本文件分为 150 个部分,因此我在对象类本身中创建了一个函数。 这是完整的对象类:

public TehilimEpisode(int EpisodeID, String[] ab)
{
    this.EpisodeID=EpisodeID;
    this.Perek=ab;
}
public static void setperek(TehilimEpisode[] pirkoni) throws IOException
{
    BufferedReader inputReader = new BufferedReader(new FileReader("C:\\\\*.txt"));
    String nextLine; String[] ab;
        while ((nextLine = inputReader.readLine()) != null)
        {   
        for(int i=1; i<=150;i++)
        {
            ab = nextLine.split("$");
            pirkoni[i] = new TehilimEpisode(i, ab);
        }
    }
    for(int i=1; i<=150; i++)
        pirkoni.toString();
}
@Override
public String toString() {
    return String.format(EpisodeID + " & " + Arrays.toString(Perek));
}
@Override
protected Object clone() throws CloneNotSupportedException {
    // TODO Auto-generated method stub
    return super.clone();
}
@Override
public boolean equals(Object obj) {
    // TODO Auto-generated method stub
    return super.equals(obj);
}
@Override
protected void finalize() throws Throwable {
    // TODO Auto-generated method stub
    super.finalize();
}
@Override
public int hashCode() {
    // TODO Auto-generated method stub
    return super.hashCode();
}
}

函数名称为setperek。当我尝试从主类运行该函数时,它正在写入以下错误:

Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.util.Scanner.nextLine(Unknown Source)
    at TehilimEpisode.setperek(TehilimEpisode.java:25)
    at main.main(main.java:48)

最佳答案

您必须读取单个字符串中的整个 txt,然后用“$”分割它。下面是我使用分隔符 \\z 读取单个字符串中的整个文件的示例,然后我用“$”分割字符串。在下面的示例中,我们单行阅读整本书,然后用“$”将其分割为剧集,就像您在剧集末尾添加的那样。

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class FileReadingWithScanner {

  public static void main(String[] args) throws IOException {
    File file = new File("D:\\book.txt");
    String book = "";
    Scanner sc = new Scanner(file);
    /* Using this delimiter you will be able to read whole file in single line. */
    sc.useDelimiter("\\Z");
    book = sc.next();
    String[] episodeArr = book.split("$");
    //Do whatever you want.
  }
}

更新

String.split() 接受正则表达式作为参数,$ 是 Java 正则表达式 API 中的元字符。因此,你需要转义它: 使用这个 book.split("\\$");

关于java - 尝试在对象类中创建一个将文本文件划分为多个部分的函数(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48077544/

相关文章:

java - 水平分割 PDF 的一部分

android - 主机模式或附件模式

java - 有效的正则表达式?

java - 在子类对象上链接方法,从两个类返回 this 的方法

file - 如何等到文件在 Rust 中创建?

node.js - 如何在将数据添加到nodejs中的文件后立即从音频文件中读取数据作为缓冲区?

sql - 你怎么知道在sql中什么时候使用varchar什么时候使用text?

Python Tkinter 文本背景

python - 在 Python 中解析巨大的日志文件

java - Firebase 消息不起作用