Как сделать Java File Reader
Я пытаюсь сделать скремблер слов для проекта в классе. Это нужно читать в .txt
файл и вывод строки со всеми словами в файле; но вскарабкался. например:
Вот как должны быть зашифрованы слова.
Игнорирование знаков препинания и оставление первой и последней буквы на месте.
У меня проблемы с чтением файла в массив. Я планировал использовать collection.shuffle, чтобы перетасовать внутренние слои, игнорируя первую и последнюю букву и рандомизируя внутренние буквы.
Я не знаю, как реализовать программу для чтения файлов, но вот мой скремблер для каждого слова.
public static String shuffle(String input){
input = "supercalifragilisticexpialidocious";
int i = 0;
ArrayList<Character> chars = new ArrayList<Character>(input.length());
String output = "";
char[] characters = input.toCharArray();
char[] newWord = new char[input.length()];
newWord[0] = characters[0];
newWord[input.length()-1] = characters[input.length()-1];
for (i=1; i < input.length()-1;i++ ) {
chars.add(characters[i]);
}
System.out.println(chars);
for (i = 1; i <= input.length()-2; i++)
{
Collections.shuffle(chars);
}
Character[] middle = chars.toArray(new Character[chars.size()]);
for (i = 1; i < newWord.length - 2; i++)
{
newWord[i] = middle[i];
}
System.out.println(newWord);
StringBuffer r= new StringBuffer(output);
for (i = 0; i < newWord.length-1; i++)
{
r.append(newWord[i]);
}
return output;
}
Это выводы saxupieipclflaurrtocslcidigaiiois
как я хочу, но теперь мне нужен способ прочитать файл.txt и разделить его на отдельные слова.
Если кто-нибудь может мне помочь, это было бы здорово. Что я действительно ищу, так это если кто-то может помочь мне с созданием файлового ридера.
3 ответа
Надежда может помочь вам. Спасибо за 1-й и 2-й ответы, полученные от них.
public class FileReader
{
public static void main(String[] args) {
String filePath = "data.txt";
File file = new File(filePath);
Scanner scanner = null;
List<String> words = new ArrayList<String>();
try {
scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
words.addAll(getWords(line));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
scanner.close();
}
for(String word : words)
{
System.out.println(word);
}
}
public static List<String> getWords(String text) {
String[] words = text.split("[^\\w']+");
return Arrays.asList(words);
}
}
Используйте читатель для чтения файла, используйте регулярное выражение для разбиения на слова
BufferedReader br = new BufferedReader( new FileReader( "file.txt" ) );
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while ( line != null ) {
sb.append( line );
sb.append( '\n' );
line = br.readLine();
}
String everything = sb.toString();
String[] words = everything.split( "[^\\w']+" );
System.out.println( words );
} finally {
br.close();
}
}
Для краткости рекомендую использовать сканер класса:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ScannerReadFile {
public static void main( String[] args ) {
final File file = new File( "data.txt" );
try ( final Scanner scanner = new Scanner( file ); ) {
while ( scanner.hasNextLine() ) {
String line = scanner.nextLine();
System.out.println( line );
}
} catch ( FileNotFoundException e ) {
e.printStackTrace();
}
}
}