JPanel内...
特定の .txt ファイルから特定のテキスト行を表示することは可能ですか?
例...
ユーザーはいくつかのドロップダウンから選択し (この部分は既に取得済みです)、送信をクリックします。次に、右側の JPanel で、(たとえば) xxx.txt から 24 ~ 43 行目をプルします。
私はこれを成し遂げる方法を見つけていません、それは可能ですか?
あなたが言っていることは、ファイルが非常に大きい場合など、他の側面も考慮する必要があります。したがって、番号でアクセスするためだけにコレクションに保存するだけでは、良い解決策にはなりません。RandomAccessFileのように、この問題を解決するのに役立つさまざまなAPIがあります。これらのリンクを確認してください
これを過度に複雑にしているのではないかと思います。あなたがする必要があるのはあなたのファイルからテキストを読むためにScannerクラスを使うことです。そして、Timがコメントで述べたように、Scannerが取り込んだものをリスト構造にロードし、そこから行を印刷することができます(ただし、正直なところ、リストストレージ構造がなくても操作が簡単になります)。そして、ええ、テキストペインにsetTextメソッドを使用すると、すぐに使用できます。
ListInterfaceは、任意のストレージタイプに置き換えることができます。再びティムは、同様に機能するリストを提案しました。単純な配列を使用することもできますが、その場合、それとうまくインターフェースするための独自のメソッドを作成することはできません。
ListInterface<String> fileBag = new ListArray<>();
try
{
/*
* Open file fileName with Scanner
* add all entries fron the file somefile.txt into fileBag
* Close Scanner object
*/
String fileName = "somefile.txt";
File file = new File(fileName);
Scanner scanner = new Scanner(file);
String line;
while (scanner.hasNextLine())
{
line = scanner.nextLine();
fileBag.add(line);
}
scanner.close();
}
catch(FileNotFoundException e)
{
System.out.println(e.getMessage());
System.exit(0);
}
インターフェイスの使用方法がわからない場合は、ListArrayクラスに独自のメソッドを記述してから、
ListInterface<String> fileBag = new ListArray<>();
と
ArrayList<String> fileArrayList = new ArrayList<>(1000);
ここで、1000は、配列が必要な大きさを正確に推測するのに最適です。正確である必要はありません。配列を追加して十分なスペースがない場合、配列の容量は2倍になりますが、これはO(n )操作なので、ファイルに含まれる最大行数がわかっている場合は、これを避けるのが最善です。また、交換してください:
fileBag.add(line);
と
with fileArrayList.add(line);
を見てみましょう
FileReader
包まれたものを使用することをお勧めしますBufferedReader
小さな更新
多くはファイルのサイズに依存します。ファイルを一度に読み込んで保存し、リクエストごとに読み込む方が効率的ですjava.util.List
が、これは使用可能なメモリの量によって異なります。