JAVA将任意txt文档中的内容分行存入数组
打开任意路径下一个txt文档(出窗口可以选择路径的那种)此txt文档每行包含一个数字,一个词,例:1美丽2丑恶1美好1动听……每一行第一个字母存入一个数组s1,s1[1]...
打开任意路径下一个txt文档(出窗口可以选择路径的那种)
此txt文档每行包含一个数字,一个词,例:
1美丽
2丑恶
1美好
1动听
……
每一行第一个字母存入一个数组s1,s1[1]=1,s1[2]=2,s1[3]=1,s1[4]=1……
每行后面的词同理存入字符串数组s2,s2[1]=美丽,s2[2]=丑恶……
统计出一共多少行赋给s(即多少个数字/词语),数字1的个数赋给m,数字2的个数赋给n
将所有数字1后面的词语转存入此路径下新建txt文件中,命名为abc
将所有数字2后面的词语转存入此路径下新建txt文件中,命名为def 展开
此txt文档每行包含一个数字,一个词,例:
1美丽
2丑恶
1美好
1动听
……
每一行第一个字母存入一个数组s1,s1[1]=1,s1[2]=2,s1[3]=1,s1[4]=1……
每行后面的词同理存入字符串数组s2,s2[1]=美丽,s2[2]=丑恶……
统计出一共多少行赋给s(即多少个数字/词语),数字1的个数赋给m,数字2的个数赋给n
将所有数字1后面的词语转存入此路径下新建txt文件中,命名为abc
将所有数字2后面的词语转存入此路径下新建txt文件中,命名为def 展开
3个回答
展开全部
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Test extends JFrame{
/**
* @param args
*/
public static void main(String[] args) {
new Test();
}
public Test() {
setLayout(new FlowLayout());
JButton button = new JButton("选择文件");
add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
FileDialog dialog = new FileDialog(Test.this,"选择文件",FileDialog.LOAD);
dialog.setVisible(true);
dialog.setFilenameFilter(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.lastIndexOf(".txt") > 0;
}
});
String folder = dialog.getDirectory();
String f = folder + dialog.getFile();
System.out.println(f);
action(f);
}
});
setBounds(new Rectangle(500,300));
setLocationRelativeTo(null);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void action(String sPath) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(sPath));
String line = null;
String[] s1 = {};
String[] s2 = {};
int m = 0,n = 0;
StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = new StringBuffer();
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
String regex = "(\\d)([^\\d]+)";
Pattern p = Pattern.compile(regex);
while ((line = br.readLine()) != null) {
Matcher matcher = p.matcher(line);
if (matcher.find()) {
String num = matcher.group(1);
String words = matcher.group(2);
System.out.println(num + words);
list1.add(num);
list2.add(words);
}
}
s1 = new String[list1.size()];
s2 = new String[list2.size()];
for (int i=0;i<list1.size();i++) {
s1[i] = list1.get(i);
s2[i] = list2.get(i);
if ("1".equals(s1[i])) {
m++;
sb1.append(s2[i]).append("\r\n");
}
if ("2".equals(s1[i])) {
n++;
sb2.append(s2[i]).append("\r\n");
}
}
JOptionPane.showMessageDialog(this, "m=" + m + ",n=" + n);
String folder = sPath.substring(0,sPath.lastIndexOf(File.separator));
System.out.println(folder);
String newpath1 = folder + File.separator + "abc.txt";
String newpath2 = folder + File.separator + "def.txt";
BufferedWriter bw = new BufferedWriter(new FileWriter(newpath1));
bw.write(sb1.toString());
bw.close();
bw = new BufferedWriter(new FileWriter(newpath2));
bw.write(sb2.toString());
bw.close();
JOptionPane.showMessageDialog(this, "处理完成!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
追问
可以把项目压缩包传给我么?谢谢谢谢~~
追答
就这一个类呀,还要跑压缩包做什么
用的啥开发工具?
如果用的Eclipse,新建一个Java Project,然后新建一个类Test.java,然后复制上面的代码到Test.java,然后右键run as java application。运行后会有一个窗口,单击“选择文件”按钮,选择你的文件,然后会给你提示处理结果。
如果没用什么开发工具,复制上面的代码保存为Test.java,然后将命令行窗口打开,cd到Test.java所在的目录,然后输入javac Test.java,然后再输入java Test,就行了。
展开全部
给你写个思路吧,用BufferedReader 的readLine()方法按行 读取txt中的数字和文字,然后用string的 substring(int 开始下标,
int 结束下标) 做截取,然后给数字做类型转换存入数组中。
int 结束下标) 做截取,然后给数字做类型转换存入数组中。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-02-20
展开全部
/**
* 以行为单位读取文件,常用于读面向行的格式化文件
* @param fileName 文件名
*/
public static ArrayList<String> readFileByLines(String fileName){
ArrayList<String> list = new ArrayList<String>();
File file = new File(fileName);
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
String tempString = null;
while ((tempString = reader.readLine()) != null){
list.add(tempString);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null){
try {
reader.close();
} catch (IOException e1) {
}
}
}
return list;
}
给你段代码 , 自己在创建两个数组比较下 就可以了
* 以行为单位读取文件,常用于读面向行的格式化文件
* @param fileName 文件名
*/
public static ArrayList<String> readFileByLines(String fileName){
ArrayList<String> list = new ArrayList<String>();
File file = new File(fileName);
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
String tempString = null;
while ((tempString = reader.readLine()) != null){
list.add(tempString);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null){
try {
reader.close();
} catch (IOException e1) {
}
}
}
return list;
}
给你段代码 , 自己在创建两个数组比较下 就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询