如何在java String数组中输入新行。 例如我的输入文件是:
Student learns programming
java.Teacher rates
student.Nero gets ten.
并且输出在一行中。 输出:
Student learns programming java.Teacher rates student.Nero gets ten.
我使用的代码是:
File f=new File(s3);
File _if=new File(s2);
File _dic=new File(s4);
f.createNewFile();
FileInputStream _inputfile=new FileInputStream(_if.getAbsolutePath());
BufferedReader _readfile=new BufferedReader(new InputStreamReader(_inputfile));
String _str=_readfile.readLine();
FileWriter _filewrite=new FileWriter(f);
BufferedWriter _buffwrt=new BufferedWriter(_filewrite);
int sum=0,sum2=0;
ArrayList<String> _array=new ArrayList<String>();
while (_str != null) {
String[] _vect = _str.split(" ");
int i;
for (i = 0; i < _vect.length; i++) {
_array.add(_vect[i]);}
_str =_readfile.readLine();
}
答案 0 :(得分:1)
您可以使用Apache Commons IO
查看this方法,该方法直接读取文件列表。
答案 1 :(得分:0)
你可以在for循环后为arraylist添加一个“\ n”字符串:
for (i = 0; i < _vect.length; i++) {
_array.add(_vect[i]);
}
_array.add("\n");//this will add a new line character to the arraylist
答案 2 :(得分:0)
我不会将换行符添加为列表中的String
,而是将换行符附加到String本身:
for (i = 0; i < _vect.length; i++) {
_array.add(_vect[i] + "\n");
}
我不认为通过在String
上将换行符List
作为唯一条目来浪费内存分配是一个好主意。
答案 3 :(得分:0)
如果此作业的全部意图是读取文件并将其写回,那么您根本不需要ArrayList
。你可以这样做:
while ( _str != null ) {
_buffwrt.write( _str );
_buffwrt.newLine();
}
这只是从输入文件中读取每一行并将其写回输出文件。
但我怀疑,从您的代码中,您确实想要对此文件中的单词执行某些操作。你没有解释你在做什么。也许你想要数数,或者你想将它们翻译成某种东西。
但重要的是,您不必将整个文件的所有单词一起保存在ArrayList
中。您应该分别为每一行执行此操作。您甚至可以直接使用拆分阵列。例如,以下是如何计算整个文件的单词,并且仍然分别编写每一行。
int sum = 0;
while ( _str != null ) {
String[] _vect = _str.split(" ");
sum += vect.length;
_buffwrt.write( _str );
_buffwrt.newLine();
}
这会在读取每一行后将每行中的单词数添加到单词总数中。但它仍然像以前一样将原始行写入输出文件。
如果您要做的是更改单词并将其写回更改,您可以执行以下操作:
while ( _str != null ) {
String[] _vect = _str.split(" ");
for ( int i = 0 ; i < _vect.length; i++ ) {
// Change _vect[i] in some way
_vect[i] = ....;
// Write a space if it's not the first word
if ( i != 0 ) {
_buffwrt.write( ' ' );
}
_buffwrt.write(vect[i]);
}
_buffwrt.newLine();
}
你在这里做的是分割线,处理每个单词,然后将其写入输出文件。如果它不是第一个单词,你也可以在它之前写一个空格。
这里重要的一点是不要一起收集文件中的所有单词,然后尝试记住属于哪一行的单词,或者添加ArrayList
的换行符,这些换行符不是单词,可能会影响你的程序的逻辑。相反,分别处理每一行,并单独编写,然后您可以在处理结束时添加换行符。