#java #buffer
#java #буфер
Вопрос:
Я зашел так далеко, но, похоже, что buffer не будет принимать массивы, потому что сначала у меня было так
while ((strLine = br.readLine()) != null)
{
// Print the content on the console
// System.out.println (strLine);
String Record = strLine;
String delims = "[,]";
String[] LineItem = Record.split(delims);
//for (int i = 0; i < LineItem.length; i )
for (int i = 0; i == 7; i )
{
System.out.print(LineItem[i]);
}
теперь я заканчиваю на этом, потому что он читает, но не убирает запятые.
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
public class mainPro1test {
public static void main(String[] args) {
File file = new File("test.txt");
StringBuffer contents = new StringBuffer();
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("C:\2010_Transactions.txt"));
String text = null;
// repeat until all lines is read
while ((text = reader.readLine()) != null) {
String Record = text;
String delims = "[,]";
String[] LineItem = Record.split(delims);
contents.append(text)
.append(System.getProperty(
"line.separator"));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
// show file contents here
System.out.println(contents.toString());
}
}
о том, как это должно выглядеть
ввод
Sell,400,IWM ,7/6/2010,62.481125,24988.02,4.43
Sell,400,IWM ,7/6/2010,62.51,24999.57,4.43
вывод
Sell 400 IWM 7/6/2010 62.481125 24988.02 4.43
Sell 400 IWM 7/6/2010 62.51 24999.57 4.43
Комментарии:
1. Скобки должны быть отделены от запятых некоторым пробелом между ними?
Ответ №1:
Если вы хотите удалить запятые только из строки, вы можете использовать String.replaceAll(",","");
Если вы хотите заменить их пробелами, используйте String.replaceAll(","," ")
:
while ((text = reader.readLine()) != null) {
contents.append(text.replaceAll(","," ");
}
Также в вашем коде вы, кажется, разделяете входные данные, но не используете результат этой операции.
Комментарии:
1. ввод Sell, 400,IWM,6/6/2010,62.481125,24988.02,4.43 Sell, 400,IWM,6/6/2010,62.51,24999.57,4.43 вывод Sell 400 IWM 7/6/2010 62.481125 24988.02 4.43 Sell 400 IWM 7/6/2010 62.51 24999.57 4.43
Ответ №2:
Проще всего определить новый, InputStream
который просто удаляет запятые…
class CommaRemovingStream extends InputStream {
private final InputStream underlyingStream;
// Constructor
@Override public int read() throws IOException {
int next;
while (true) {
next = underlyingStream.read();
if (next != ',') {
return next;
}
}
}
}
Теперь вы можете прочитать файл без запятых:
InputStream noCommasStream = new CommaRemovingStream(new FileInputStream(file));
Комментарии:
1. Вы можете избавиться от первой проверки на
next == -1
. Это было бы обработано вnext != ','
.