读书人

用java把一个文本文件分为两个

发布时间: 2012-12-25 16:18:28 作者: rapoo

用java把一个文本文件分成两个
用java写文本文件,把一个.sci文件分成两个,只是它们的坐标值改一下就行了,不知道怎么修改它们的坐标值,怎么把一个文件分成两个。
<sml:ImageLeft>48.397189336312977</sml:ImageLeft>
<sml:ImageTop>-55.577652310411075</sml:ImageTop>
<sml:ImageRight>8958.8508749688572</sml:ImageRight>
<sml:ImageBottom>-7668.2452920745318</sml:ImageBottom>
那个坐标点就是(top+bottom)/2;
[最优解释]


try {
File file = new File("E:\\test\\changchun.SCI");

File f1 = new File("E:\\test\\changchun1.SCI");
File f2 = new File("E:\\test\\changchun2.SCI");
FileReader fr = new FileReader(file); // 创建BufferedReader对象
FileWriter fos = new FileWriter(f1); // 创建文件输出流
FileWriter fos1 = new FileWriter(f2); // 创建文件输出流
BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(fos); // 创建BufferedWriter对象
BufferedWriter bw1 = new BufferedWriter(fos1); // 创建BufferedWriter对象
String str = null;

while ((str = br.readLine()) != null) {
if (str.startsWith("<sml:ImageTop>")) {
bw.write(str + "\r\n"); // 为读取的文本行添加回车
str = "<sml:ImageTop>" + tfile.getCoordinate() + "</sml:ImageTop>";
bw1.write(str + "\r\n"); // 为读取的文本行添加回车
} else if (str.startsWith("<sml:ImageBottom>")) {
bw1.write(str + "\r\n"); // 为读取的文本行添加回车
str = "<sml:ImageBottom>" + tfile.getCoordinate() + "</sml:ImageBottom>";
bw.write(str + "\r\n"); // 为读取的文本行添加回车
} else {
bw.write(str + "\r\n"); // 为读取的文本行添加回车
bw1.write(str + "\r\n"); // 为读取的文本行添加回车
}
}

br.close(); // 关闭输入流
bw.close(); // 关闭输出流
bw1.close(); // 关闭输出流

} catch (IOException e) {
e.printStackTrace();
}

[其他解释]
应该和XML文件解析一样吧!
[其他解释]
说真的还是不太明白你的需求,.sci是什么文件,为什么需要修改坐标来拆分?

这些又是什么?
<sml:ImageLeft>48.397189336312977</sml:ImageLeft>
<sml:ImageTop>-55.577652310411075</sml:ImageTop>
<sml:ImageRight>8958.8508749688572</sml:ImageRight>
<sml:ImageBottom>-7668.2452920745318</sml:ImageBottom>


[其他解释]
反正应该是2进制文件,
用BufferedReader reader = new BufferedReader(new FileReader("E:/xxx.sci"));读取好了,
把想读来的内容再计算,然后再写文件就OK了。。。

引用:
说真的还是不太明白你的需求,.sci是什么文件,为什么需要修改坐标来拆分?

这些又是什么?
<sml:ImageLeft>48.397189336312977</sml:ImageLeft>
<sml:ImageTop>-55.577652310411075</sml:ImageTop>
<sml:ImageRight>8958.8508749688572</sml:ImageRig……

[其他解释]
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;



public class TestFile {
private double left,top,right,bottom;
public TestFile(double left,double top,double right,double bottom){
this.left=left;
this.top=top;
this.right=right;
this.bottom=bottom;
}

public double getHeight(){
return top+bottom;
}

public double getCoordinate(){
return getHeight()/2;
}

public static void main(String []args){

TestFile tfile=new TestFile(48.308084799500001,-55.501525633999997,8958.9399795056997,-7668.3214187509002);
System.out.println(tfile.getCoordinate()+"=======");

try {
File file = new File("E:\\test\\changchun.SCI");
File f1 = new File("E:\\test\\changchun1.SCI");
File f2 = new File("E:\\test\\changchun2.SCI");
FileReader fr = new FileReader(file); // 创建BufferedReader对象
FileWriter fos = new FileWriter(f1); // 创建文件输出流
FileWriter fos1 = new FileWriter(f2); // 创建文件输出流
BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(fos); // 创建BufferedWriter对象
BufferedWriter bw1 = new BufferedWriter(fos1); // 创建BufferedWriter对象
String str = null;

int lineDel = 21;
int line=0;
while ((str = br.readLine()) != null) {
line++;
//这是我写的,还有两处错误:一是这个判断条件不能写死!二是生成的内容完全一样,第二个的坐标应该和第一个的不一样。把它当成.txt文件就行了if(str.equals
("<sml:ImageBottom>-7668.2452920745318</sml:ImageBottom>")){
System.out.println("-------------");
bw.write(str.replace("<sml:ImageBottom>-7668.2452920745318</sml:ImageBottom>",
"<sml:ImageBottom>"+tfile.getCoordinate()+"</sml:ImageBottom>" ) + "\r\n"); // 为读取的文本行添加回车
bw1.write(str.replace("<sml:ImageBottom>-7668.2452920745318</sml:ImageBottom>",
"<sml:ImageBottom>"+tfile.getCoordinate()+"</sml:ImageBottom>" ) + "\r\n"); // 为读取的文本行添加回车
}
if(line==lineDel){
continue;
}else{
bw.write(str + "\r\n"); // 为读取的文本行添加回车
bw1.write(str + "\r\n"); // 为读取的文本行添加回车
}
}

br.close(); // 关闭输入流
bw.close(); // 关闭输出流
bw1.close(); // 关闭输出流

} catch (IOException e) {
e.printStackTrace();
}
}
}

[其他解释]
你先把你自己期望的两个文件内容贴出来看看。。。
光看你的描述不是很懂。。。
[其他解释]
原来的坐标是:<sml:ImageLeft>48.397189336312977</sml:ImageLeft>
<sml:ImageTop>-55.577652310411075</sml:ImageTop>
<sml:ImageRight>8958.8508749688572</sml:ImageRight>
<sml:ImageBottom>-7668.2452920745318</sml:ImageBottom>


修改后第一个是:<sml:ImageLeft>48.397189336312977</sml:ImageLeft>


<sml:ImageTop>-55.577652310411075</sml:ImageTop>
<sml:ImageRight>8958.8508749688572</sml:ImageRight>
<sml:ImageBottom>-3861.91147219245</sml:ImageBottom>

修改后第二个是:<sml:ImageLeft>48.397189336312977</sml:ImageLeft>
<sml:ImageTop>-3861.91147219245</sml:ImageTop>
<sml:ImageRight>8958.8508749688572</sml:ImageRight>
<sml:ImageBottom>-7668.2452920745318</sml:ImageBottom>


把<sml:ImageLeft>48.397189336312977</sml:ImageLeft>
<sml:ImageTop>-55.577652310411075</sml:ImageTop>
<sml:ImageRight>8958.8508749688572</sml:ImageRight>
<sml:ImageBottom>-7668.2452920745318</sml:ImageBottom>这个当成changchun.sci文件就行,其他的内容都是不用变的。
[其他解释]
效果是正确的!谢谢了!!!非常非常感谢~

读书人网 >Eclipse开发

热点推荐