Я делаю токенизацию текстового файла в Java.Я хочу прочитать входной файл, токенизировать его и записать определенный символ, который был токенизирован в выходной файл.Это то, что я сделал до сих пор:
package org.apache.lucene.analysis;</p>
<p>import java.io.*; </p>
<p>class StringProcessing
{
// Create BufferedReader class instance
public static void main(String[] args) throws IOException
{
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader keyboardInput = new BufferedReader(input);
System.out.print("Please enter a java file name: ");
String filename = keyboardInput.readLine();
if(!filename.endsWith(".DAT"))
{
System.out.println("This is not a DAT file.");
System.exit(0);
}
File File = new File(filename);
if(File.exists())
{
FileReader file = new FileReader(filename);
StreamTokenizer streamTokenizer = new StreamTokenizer(file);
int i=0;
int numberOfTokensGenerated = 0;
while(i != StreamTokenizer.TT_EOF)
{
i = streamTokenizer.nextToken();
numberOfTokensGenerated++;
}
// Output number of characters in the line
System.out.println("Number of tokens = " + numberOfTokensGenerated);
// Output tokens
for (int counter=0; counter < numberOfTokensGenerated; counter++)
{
char character = file.toString().charAt(counter);
if (character == ' ') System.out.println();<br>
else System.out.print(character);
}
}
else
{
System.out.println("File does not exist!");
System.exit(0);
}</p>
<code>System.out.println("\n");
}//end main
}//end class <code>
</code>
Когда я запускаю этот код, это то, что я получаю:
Please enter a java file name: D://eclipse-java-helios-SR1-win32/LexractData.DAT
Number of tokens = 129
java.io.FileReader@19821fException in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 25
at java.lang.String.charAt(Unknown Source)
at org.apache.lucene.analysis.StringProcessing.main(StringProcessing.java:40)
Входной файл будет выглядеть следующим образом:
`-K1 Account
- Снять вывод Op1
--- Param1 и
---- Тип Int
--- сумма Param2
---- тип Int
- депозит Op2
--- Param1 и
---- Тип Int
--- Param2 Сумма
---- Тип Int
- CA1 acNo
--- Тип Int
-K2 CheckAccount
- учетная запись SC
- CA1 credit_limit
--- Тип Int
-K3 Клиент
- имя CA1
--- тип строка
-K4 транзакция
- дата CA1
--- тип дата
- CA2 time
--- Тип Time
-K5 CheckBook
-K6 Check
-K7 BalanceAccount
- Учетная запись SC`
Я просто хочу прочитать строку, начинающуюся с -K1
, -K2
, -K3
,и так далее ... кто-нибудь может мне помочь?