arraylist-不能在文件中写入新的行

问题描述

不能在文件中写入新的行

我想把一串字符串写入一个文件中:

private void writeScoreToFile(BlastScore result)
    {
        try{
            FileWriter fstream = new FileWriter(getFilesDir() + CaptureActivity.BLAST_SCORES,true);
            BufferedWriter out = new BufferedWriter(fstream);
            out.write(Integer.toString(result.getBlastScore()));
            out.close();
        }catch (Exception e){
            System.err.println("Write Error: " + e.getMessage());
        }
    }

我想把它再作为一个列表读出来。

private List<String> getArrayFromFile(String filename) throws IOException
    {
        FileReader fileReader = new FileReader(getFilesDir() + filename);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        List<String> lines = new ArrayList<String>();
        String line = null;
        while ((line = bufferedReader.readLine()) != null) {
            lines.add(line);
        }
        bufferedReader.close();
        return lines;
    }

写入列表中的是:

100
96
100
96
100

打印出的列表却是这样的:

02-26 21:22:31.130: I/System.out(936): Last Score: 1009610096100

打印列表用的是下面的代码:

try {
            List<String> blastScores = getArrayFromFile(CaptureActivity.BLAST_SCORES);
            System.out.println("Last Score: " + blastScores.get(blastScores.size()-1));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            System.err.println("Read Error: " + e.getMessage());
        }

请求大家帮忙改正,谢谢。

解决方案

当你输入的是整型或整型字符串,每次输出后,你没有输入一个新的行。因此,你的文件中只有一行数据,就是你作为一个连续字符串的那行。
所以作为修复,在单独的 write() 调用中,添加像 write.newLine() 一行分隔符。

解决方案二:

writeScoreToFile 函数中没有看见新的行,或者任何类型的分隔符,可以单独区分写入的分数。
既然那样的话,你的文件在一行中应该包含 1009610096100, getArrayFromFile 中的循环只会被执行一次

while ((line = bufferedReader.readLine()) != null) {
   lines.add(line);
}

因此 List 只包含一个元素,代码 blastScores.get(blastScores.size()-1)将会得到最后的唯一的元素,就是1009610096100

时间: 2024-08-31 02:05:34

arraylist-不能在文件中写入新的行的相关文章

PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码_php技巧

创建文件我们用到函数 fopen ( string filename, string mode ) 参数filename为创建文件名 参数mode为以什么方式打开文件filename 其中mode可能值列表: mode 说明 'r' 只读方式打开,将文件指针指向文件头. 'r+' 读写方式打开,将文件指针指向文件头. 'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零.如果文件不存在则尝试创建之. 'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零.如果文件不存在则尝试创建

qt txt文件 中文 乱码-Qt5中用QTextStream向txt文件中写入中文字符串,打开文件时出现乱码

问题描述 Qt5中用QTextStream向txt文件中写入中文字符串,打开文件时出现乱码 在网上查了一些关于Qt中文乱码的问题,主要是因为机器的编码问题QTextCodec::setCodecForLocale(QTextCodec::codecForName(""GBK""));QTextCodec::setCodecForCStrings(QTextCodec::codecForName(""GBK"")); QText

可精确到1毫秒的用以在记录文件中写入自定义的调试信息(主要是时间)的组件

上次我发布了一个用以在记录文件中写入自定义的调试信息(主要是时间)的组件,但由于CLR的限制,它只能精确到10毫秒左右.后来我参考了网络上的一篇文章:http://blog.joycode.com/lostinet/archive/2005/04/24/49590.aspx(在这里首先向原作者表示感谢)通过调用系统API得到了可精确到1毫秒左右的时间记录.故特重新用C#重写了这个组件,与大家共享. //===============================================

用以在记录文件中写入自定义的调试信息(主要是时间)的组件

'===================================================================='TraceSpy - 用以在记录文件中写入自定义的调试信息(开发者:林健)'====================================================================''属性:'       TraceFileName        - 记录文件名''方法:'   ★文本写入方面'       WriteText

qml如何让listview中的item变为可编辑状态,就是双击点中就可以在item中写入新的内容。

问题描述 qml如何让listview中的item变为可编辑状态,就是双击点中就可以在item中写入新的内容. deletegate代码如下: Component { id: template_Delegate Item { id: template_wrapper width: parent.width height: 30 TextEdit { id: template_input text: name width: parent.width height: 30 readOnly: tru

XDocument向xml文件中写入\r \n等特殊字符的问题

问题描述 问题:在使用XDocument向xml文件中写入rn等特殊字符时会出现这个错误:{""."(十六进制值0x00)是无效的字符."}.查找资料,有人说用Base64进行转换,转换后写入没问题,但是在读取的时候中文字符全变成了乱码.请问:XDocument中有什么好的方法避免rn写入时出错的问题吗? 解决方案 解决方案二:给你写一个例子usingSystem;usingSystem.IO;usingSystem.Xml.Linq;namespaceConsol

java创建文件,并向文件中写入字符串,读取字符串到屏幕

public class FileTest01 { public static void writeFileString() { File file = new File("E:\\zkn"); if(!file.isDirectory()) file.mkdir();//创建目录 File fileDir = new File(file,"zkn.txt"); if(!fileDir.isFile()){ try { fileDir.createNewFile()

java简单统计.java文件中的有效代码行,空行,注释行

package regxdemo; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class CountFile { /** * @param args */ static int cntCode=0, cntNode=0, cntSpace

为什么写入到文件中的会是一堆乱码

问题描述 publicclassTest15{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubStringdirectory="E://";Stringname="tom.txt";Filef=newFile(directory,name);RandomAccessFilefile=null;int[]b={1,2,3,4,5,6,7,8,9,10};t