如何制作 Java 文件阅读器
Posted
技术标签:
【中文标题】如何制作 Java 文件阅读器【英文标题】:How to make a Java File Reader 【发布时间】:2013-09-17 13:41:22 【问题描述】:我正在尝试为课堂上的一个项目制作单词扰频器。它需要读入一个.txt
文件并输出一个包含文件中所有单词的字符串;但被炒了。例如:
这就是单词应该被打乱的方式。
忽略标点符号并保留第一个和最后一个字母。
我在将文件读入数组时遇到问题。我打算使用 collections.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 文件并将其拆分为单独的单词。
如果有人可以帮助我,那就太好了。我真正在寻找的是是否有人可以帮助我为此制作文件阅读器。
【问题讨论】:
【参考方案1】:希望能帮到你。感谢第一个和第二个答案,从他们那里得到。
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);
【讨论】:
【参考方案2】:使用文件阅读器读取文件使用正则表达式拆分成单词
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();
【讨论】:
所以这会给我 .txt 文件中的所有内容作为由空格分隔的字符串?您是否建议使用 .split 将它们变成单独的单词?【参考方案3】:为简洁起见,我建议使用Scanner 类:
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();
【讨论】:
以上是关于如何制作 Java 文件阅读器的主要内容,如果未能解决你的问题,请参考以下文章
(ComputerCraft) (minecraft version 1.7.10) (question) 制作语言文件阅读器