方法:
通过输入流的readline方法进行按行读取内容。
举例:
public static void readFileOnLine(String filePath){//输入文件路径FileInputStream fis = openFileInput(filePath)//打开文件输入流
StringBuffer sBuffer = new StringBuffer()
DataInputStream dataIO = new DataInputStream(fis)//读取文件数据流
String strLine = null
while((strLine = dataIO.readLine()) != null) {//通过readline按行读取
sBuffer.append(strLine + "\n")//strLine就是一行的内容
}
dataIO.close()
fis.close()
}
我刚才特意试了一下在自己的代码里加了点调试信息String user = _loginUser.getText().toString()
int firstCR = user.indexOf("\n")
_loginUser是我UI中的EditText,在其中我输入了3行文字,每行文字我都是手动按回车键换行,这样取出来的文本是带有换行符的。
但是你如果是一直输入满后让EditText自动换行的话,这样取出来是不带换行符的。这样其实是很有道理的,自动换行本来就不会给你插入换行符,它只是由于UI的边界,看起来像换行了一样。
我觉得有种简便办法可以解决。
int lineCount = _loginUser.getLineCount()
这样可以取得EditTex里的行数
把它和里面找到的'\n'比较一下数量,就知道你的这段文本大概是个什么情况。
1 如果行数和\n数量对得上,说明每行都是手工回车换行的这种最简单,直接保存。
2 如果\n为0说明都是ui自动换行的,这样也简单,把总字数和行数一计算就知道有多少行,每行多少字,然后自己存盘时插入换行符。当然这样不太准确,算是折中。
3 对不上,说明有自动换行,也有手动换行,这种其实很麻烦,可以参考2的办法解决了。
总之没有太好的办法,毕竟EditText没法按行数取得文本
你可以自己覆写一个EditText的子类,来提供这样的方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)