我有一个大的. txt文件,里面充满了可读和不可读的字符。我试图创建一个Java的程序,它可以创建一个新的. txt文件,只有以前的. txt文件中的可读字符。请帮我做这件事。任何代码都将不胜感激。我是新来Java。
如果可读u指的是从“a”到“z”以及从“1”到“9”的所有字符,则可以使用正则表达式过滤掉这些字符,如下所示:
public static String removeSpecialCharacters(String sentence) {
//StringBuilder container to store all the data in
StringBuilder stringB = new StringBuilder();
//loop trough all the characters from the sentence
for (char c : sentence.toCharArray()) {
//only store characters that are equal to the below values
if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == ' ' ) {
stringB.append(c);
}
}
return stringB.toString().toLowerCase();
}
您可以使用返回类型(字符串)追加到新的。txt容器。比方说,对于通过removeSpecialCharacters()方法从旧文件循环中读取的每一行,使用返回值并将其附加到新文件循环中。txt文件。
如果我们在读/写文件上读取标准的java文档,我们可以编译以下代码:
import static java.nio.file.StandardOpenOption.*;
import java.nio.file.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
readFromFile();
}
private static void writeToFile(String line) {
// Convert the string to a
// byte array.
byte data[] = removeSpecialCharacters(line).getBytes();
Path p = Paths.get("/home/user/Desktop/outFile.txt");
try (OutputStream out = new BufferedOutputStream(Files.newOutputStream(p, CREATE, APPEND))) {
out.write(data, 0, data.length);
} catch (IOException x) {
System.err.println(x);
}
}
private static void readFromFile() {
Path file = Paths.get("/home/user/Desktop/inFile.txt");
try (InputStream in = Files.newInputStream(file);
BufferedReader reader =
new BufferedReader(new InputStreamReader(in))) {
String line = null;
while ((line = reader.readLine()) != null) {
writeToFile(line +"\n");
}
} catch (IOException x) {
System.err.println(x);
}
}
public static String removeSpecialCharacters(String sentence) {
//StringBuilder container to store all the data in
StringBuilder stringB = new StringBuilder();
//loop trough all the characters from the sentence
for (char c : sentence.toCharArray()) {
//only store characters that are equal to the below values
if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == ' ' ) {
stringB.append(c);
}
}
return stringB.toString().toLowerCase();
}
}
问题内容: 关于我的上一个问题,我发布了: 我必须阅读几个非常大的txt文件,并且必须使用多个线程或一个线程来执行此操作,具体取决于用户输入。 假设我有一个主要方法来获取用户输入,并且用户请求一个线程,并希望为该线程处理20个txt文件。我将如何完成?请注意,以下内容不是我的代码或其设置,而是“想法”的含义。 例: 因此,总而言之,我将如何用一个线程完成此任务? 有20个线程? 用户建议使用thr
我一直在互联网上寻找帮助,但我找不到,所以我求助于发帖。 我有一个txt文件,格式如下 1/2 0 1/6 6/11 1/6 2/10 我需要读取这些单独的分数,并输入分子和分母的函数称为BigFraction(num,denom)。 我调用读取器并将其作为字符串输出。然后,我在空格上进行拆分,以获得作为字符串的各个分数,并将它们输入到我的助手方法strToBF中,该方法在正斜杠上进行拆分,并输入
问题内容: 我会尽量保持清楚,但如果我的问题不完美,请原谅我。我有一个包含多行数据的txt文件。例: 123拉尔夫·玻色20000 200 1 2 256 ed shane 30000 100 2 4 … 我需要按顺序读取每一行,并将其传递回单独类中的方法进行处理。我知道如何通过使用StringTokenizer将每一行分解为元素。 但是,我不确定如何一次读取一行,将元素传递回另一类,然后在完成处
问题内容: 我打开 记事本 (Windows)并编写 并转到“ 另存为… ”“ someFile.txt”,并将“ 编码” 设置为 UTF-8 。 在Java中,我有 但是我得到问号和类似的“特殊”字符。为什么? 编辑: 我有此输入(.txt文件中的一行) 和这段代码 和 吐司 输出(用于那些谁不熟悉与Android,吐司只是一个显示弹出式屏幕,在它特定的文本法)的罚款。控制台显示“奇怪的字符”(
我可以使用Apache POI只读取Excel文件的第一行吗?我不想读取整个文件,因为它有50,000行,读取最多需要10分钟(性能是一场灾难)。我通过文件上传获取字节。我的选项是字节数组或InputStream。现在我正在这样做:
我正试图编写一个程序,读取网络中相互交互的节点列表。它以以下格式写入文本文件: 这表示节点1与节点2和节点3交互,节点2仅与节点3交互,等等。 该程序将能够读取该文件,并将删除任何重复的交互,并且如果我输入节点的名称,将能够向我返回节点与其他节点的交互次数。然而,我对Java非常陌生,我首先尝试让它读入文件,尽管我的代码目前没有读入文件。以下是我迄今为止的代码: 任何关于如何解决此问题的帮助都将不