有一个列表,其中每个成员都是一个8位数的字符串。
package com.example.zohaib.ultimatesmsblocker;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class FileReader {
InputStream inputStream;
public FileReader(InputStream inputStream){
this.inputStream = inputStream;
}
public List<String[]> read(){
List<String[]> resultList = new ArrayList();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
try {
String csvLine;
while ((csvLine = reader.readLine()) != null) {
String[] row = csvLine.split(",");
resultList.add(row);
}
}
catch (IOException ex) {
throw new RuntimeException("Error in reading CSV file: "+ex);
}
finally {
try {
inputStream.close();
}
catch (IOException e) {
throw new RuntimeException("Error while closing input stream: "+e);
}
}
return resultList;
}
}
我想在.txt上写下所有这些内容,如下所示:
values = [ '12345678', '23848238', '23441236', ...
我尝试使用以下代码执行此操作:
123456782384823823441236...
结果是.txt缺少第一个数字(在示例中为'1'),然后一直错过每八位数字直到结尾。我已经尝试搞乱我索引所有内容的方式(并确实得到了第一个数字显示)但它仍然错过了每八位数。
答案 0 :(得分:1)
如果您只想将该列表中的所有字符串写入文件,则无需检查长度和搜索以及所有这些。
with open('a.txt', 'w') as output:
for item in values:
output.write(item)
答案 1 :(得分:1)
您错过了第一个字符,因为您的seek
位于循环的末尾 - 导致您覆盖第二次迭代中的第一个字符。
由于range(0,7)
为[0,1,2,3,4,5,6]
你应该真的停止写这样的数据,只是像@ TigerhawkT3建议的那样一个一个地输出项目 - 根本没有寻求。