我无法将文本文件读入Java中的String。我有一个文本文件(在Eclipse中创建,如果这很重要),包含少量文本 - 大约98个字符。通过几种方法将该文件读取到String会导致字符串相当长 - 1621个字符。除了相关的98之外的所有98都在调试器/控制台中不可见。
我尝试了以下方法来加载String:
apache commons-io:
FileUtils.readFileToString(new File(path));
FileUtils.readFileToString(new File(path), "UTF-8");
byte[] b = FileUtils.readFileToByteArray(new File(path);
new String(b, "UTF-8");
byte[] b = FileUtils.readFileToByteArray(new File(path);
Charset.defaultCharset().decode(ByteBuffer.wrap(bytes)).toString();
NIO:
new String(Files.readAllBytes(path);
等等。
有没有办法剥离这些控制字符?有没有办法将文件读取到没有此问题的字符串?
如下面的评论中所述,此行为是由Eclipse生成的损坏的(?)文件引起的。不过,我仍然有兴趣听听从Strings中删除控制字符的任何策略!
答案 0 :(得分:2)
如果要删除所有不可打印的字符,请尝试使用
str = str.replaceAll("[^\\p{Graph}\n\r\t ]", "");
正则表达式匹配所有“隐形”字符,除了我们要保留的字符;在这种情况下换行字符,制表符和空格。
答案 1 :(得分:0)
逐行读取它到StringBuilder中,然后将其转换为String:
StringBuilder sb = new StringBuilder();
BufferedReader file = new BufferedReader(new FileReader(fileName));
while (true)
{
String line = file.readLine();
if (line == null)
break;
sb.append(line+"\n");
}
file.close();
return sb.toString();