我有格式的这个文本文件:分割文本文件
Token:A1
sometext
Token:A2
sometext
Token:A3
我想分裂这个文件分成多个文件,这样 文件1包含
A1
sometext
文件2包含
A2
sometext
我对任何编程或脚本语言都没有太多的想法,最好是什么该怎么办?我正在考虑使用Java来解决问题。
我有格式的这个文本文件:分割文本文件
Token:A1
sometext
Token:A2
sometext
Token:A3
我想分裂这个文件分成多个文件,这样 文件1包含
A1
sometext
文件2包含
A2
sometext
我对任何编程或脚本语言都没有太多的想法,最好是什么该怎么办?我正在考虑使用Java来解决问题。
没有最好的办法,它取决于你的环境和实际需要。但是,对于任何语言都能找出您的基本算法,并尝试使用最佳可用数据结构。如果您使用的是Java,请考虑使用guava splitter并查看它的实现。
如果你想使用java,我会考虑使用Scanner
与File
和PrintWriter
与for循环和一些异常处理,你会很好去。
导入适当的库!
import java.io.*;
import java.util.*;
声明类课程
public class someClass{
public static void main(String [] args){
现在这里是哪里的东西开始变得有趣了。我们使用类File来创建一个新文件,该文件将要读取的文件的名称作为参数传递。你可以把你想要的任何东西放在文件的路径中,也可以放在与你的代码相同的目录下的文件名。
File currentFile = new File("new.txt");
if (currentFile.exists() && currentFile.canRead()){
try{
接下来我们通过新创建的文件对象创建一个扫描仪扫描。只要文件有新的令牌可以扫描,for循环就会继续。 .hasNext()
仅当扫描器中的输入具有其他标记时才返回true。 PrintWriter写入并创建文件。我已经设置它会创建基于循环迭代(0,1,2,3等)的文件,但可以轻松更改。 (见new PrintWriter(i + ".txt". UTF-8);
)
Scanner textContents = new Scanner(currentFile);
for(int i = 0; textContents.hasNext(); i++){
PrintWriter writer = new PrintWriter(i + ".txt", "UTF-8");
writer.println(textContents.next());
writer.close();
}
这些catch语句是超级重要!没有它们,你的代码甚至不会编译。如果出现错误,他们将确保您的代码不会崩溃。我把它们的内部留空,以便你可以做你认为合适的事情。
} catch (FileNotFoundException e) {
// do something
}
catch (UnsupportedEncodingException i){
//do something
}
}
}
}
和那差不多它!如果您有任何问题,请务必发表评论!
[String.split](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-)(“Token:”) ?给你一个字符串[]与“A1 sometext”,“A2 sometext”... – Fildor
是否“sometext”保证不包含“令牌:”? – Fildor