跪求java代码读取txt文档中的数据 并判断正负 正数返回1 负数返回0 写入另一个txt文档中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跪求java代码读取txt文档中的数据 并判断正负 正数返回1 负数返回0 写入另一个txt文档中相关的知识,希望对你有一定的参考价值。

txt文档如下,数据还有很多,需要读取channel_A下面“-”前的数字,并且可以选择读取数据的周期,即隔几行读取。并判断正负 正数返回1 负数返回0 写入另一个txt文档中。麻烦各位高手帮帮忙啊,最好在关键的地方加上注释,本人java不太行。。。谢谢了!!!!!!!!!!!!

**************************************************************
Oscilloscope data: SCP

Time base: 0.014143 seconds per division
Time offset: 0.000000 seconds
Channel A sensitivity : 5.000000 volts per division
Channel A offset: 0.000000 volts
Channel A color: 32255
Channel B sensitivity : 2.000000 volts per division
Channel B offset: 0.000000 volts
Channel B color: 32255
Channel A connected: yes
Channel B connected: yes

Column 1 Time (S)
Column 2 Channel_A Voltage(V)
Column 3 Channel_B Voltage(V)

Time Channel_A Channel_B
--------------------------------------------
0.000000000000e+000 0.0000e+000 2.2032e-005
1.000000000000e-007 -4.3368e-019 2.2032e-005
2.000000000000e-007 -4.3368e-019 2.2032e-005
4.000000000000e-007 -8.6736e-019 2.2032e-005
8.000000000000e-007 -2.3852e-018 2.2032e-005
1.600000000000e-006 -5.9631e-018 2.2032e-005
3.200000000000e-006 -2.0383e-017 2.2032e-005
6.400000000000e-006 -6.2992e-017 2.2032e-005
1.280000000000e-005 -2.0524e-016 2.2032e-005
2.280000000000e-005 -6.9898e-016 2.2032e-005
3.280000000000e-005 -1.6258e-015 2.2032e-005
4.280000000000e-005 -3.0612e-015 2.2032e-005
5.280000000000e-005 -4.9637e-015 2.2032e-005
6.280000000000e-005 -7.2800e-015 2.2032e-005
。。。。。。
排版有问题。。。Channel_A的应该对正 0.0000e+000 的那列,读取判断e前面的数字,如第二行应读-4.3368

【分析】:
把源文件里面的每行数据用split分成3个String,再把第二个String用spli分成2个String,e前面的String转换成double进行判断,大于0就返回1,小于0就返回0,等于0就返回-1。

周期问题可以这样解决:
for(int i=0;i<iCyc+1;i++)//周期处理(iCyc就是周期数)
line=br.readLine();


【源文件格式】:
0.000000000000e+000 0.0000e+000 2.2032e-005
1.000000000000e-007 -4.3368e-019 2.2032e-005
2.000000000000e-007 -4.3368e-019 2.2032e-005
4.000000000000e-007 -8.6736e-019 2.2032e-005
8.000000000000e-007 -2.3852e-018 2.2032e-005
1.600000000000e-006 -5.9631e-018 2.2032e-005
3.200000000000e-006 -2.0383e-017 2.2032e-005
6.400000000000e-006 -6.2992e-017 2.2032e-005
1.280000000000e-005 -2.0524e-016 2.2032e-005
2.280000000000e-005 -6.9898e-016 2.2032e-005
3.280000000000e-005 -1.6258e-015 2.2032e-005
4.280000000000e-005 -3.0612e-015 2.2032e-005
5.280000000000e-005 -4.9637e-015 2.2032e-005
6.280000000000e-005 -7.2800e-015 2.2032e-005
【结果文件】:
-1
1
1
1
1
1
1
1
1
1
1
1
1
1

【代码】:
package Exam;
import java.io.*;
/**
*
* @author hujie0619jay@sina.com
* Mar 29, 20106:41:59 PM
*/
public class Exam_TxtDisposal
public static void main(String[] args)
Exam_TxtDisposal ed=new Exam_TxtDisposal();
String file1="f:\\111.txt";//读取的文件
String file2="f:\\222.txt";//写入的文件
ed.txtDisposal(file1, file2,0);

public void txtDisposal(String file1,String file2,int iCyc)//文件读写[源文件,结果文件,周期]
try
FileReader fr=new FileReader(file1);//读文件
BufferedReader br=new BufferedReader(fr);
FileWriter fw=new FileWriter(file2);//写文件
PrintWriter pw=new PrintWriter(fw);
String line;
line=br.readLine();//按行读取
while(line!=null)
int iNum=workedLine(line);
pw.println(iNum);//按行写入
for(int i=0;i<iCyc+1;i++)//周期处理
line=br.readLine();


pw.close();fw.close();
br.close();fr.close();
catch(FileNotFoundException e)
e.printStackTrace();
catch(IOException e)
e.printStackTrace();

System.out.println("==处理完毕!==");

public int workedLine(String line)//判断数字的正负
//每一行的格式:1.000000000000e-007 -4.3368e-019 2.2032e-005
String[] sLine1=line.split(" ");//把line分成3个String
String[] sLine2=sLine1[1].split("e");//把Channel_A分成2个String
double dNum=Double.valueOf(sLine2[0]);
if(dNum>0) return 1;//正数
if(dNum<0) return 0;//负数
return -1;//零

参考技术A 排版有问题。。。Channel_A的应该对正 0.0000e+000 的那列,读取判断e前面的数字,如第二行应读-4.3368 参考技术B 选择读取数据的周期?这个用来干 嘛,对输出 结果有影响么?

求高手点拨:一个Java的“IO读取txt文件中的数据”的问题.

高手,您好:
请问:
如果将一个存储在操作系统的txt文件中的一个整型常量进行“向内存中读取”的代码书写的话,用Java语言来做,落实到代码上,应该怎么写...?
希望高手能够落实到代码之上...
谢谢高手的相助!!
15分奉上!!

这是我前一段时间做的

一、多种方式读文件内容。
1、按字节读取文件内容
2、按字符读取文件内容
3、按行读取文件内容
4、随机读取文件内容
Java代码

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.RandomAccessFile;

import java.io.Reader;

public class ReadFromFile

public static void readFileByBytes(String fileName)

File file = new File(fileName);

InputStream in = null;

try

System.out.println("以字节为单位读取文件内容,一次读一个字节:");

// 一次读一个字节

in = new FileInputStream(file);

int tempbyte;

while ((tempbyte = in.read()) != -1)

System.out.write(tempbyte);



in.close();

catch (IOException e)

e.printStackTrace();

return;



try

System.out.println("以字节为单位读取文件内容,一次读多个字节:");

// 一次读多个字节

byte[] tempbytes = new byte[100];

int byteread = 0;

in = new FileInputStream(fileName);

ReadFromFile.showAvailableBytes(in);

// 读入多个字节到字节数组中,byteread为一次读入的字节数

while ((byteread = in.read(tempbytes)) != -1)

System.out.write(tempbytes, 0, byteread);



catch (Exception e1)

e1.printStackTrace();

finally

if (in != null)

try

in.close();

catch (IOException e1)









public static void readFileByChars(String fileName)

File file = new File(fileName);

Reader reader = null;

try

System.out.println("以字符为单位读取文件内容,一次读一个字节:");

// 一次读一个字符

reader = new InputStreamReader(new FileInputStream(file));

int tempchar;

while ((tempchar = reader.read()) != -1)

// 对于windows下,\r\n这两个字符在一起时,表示一个换行。

// 但如果这两个字符分开显示时,会换两次行。

// 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。

if (((char) tempchar) != '\r')

System.out.print((char) tempchar);





reader.close();

catch (Exception e)

e.printStackTrace();



try

System.out.println("以字符为单位读取文件内容,一次读多个字节:");

// 一次读多个字符

char[] tempchars = new char[30];

int charread = 0;

reader = new InputStreamReader(new FileInputStream(fileName));

// 读入多个字符到字符数组中,charread为一次读取字符数

while ((charread = reader.read(tempchars)) != -1)

// 同样屏蔽掉\r不显示

if ((charread == tempchars.length)

&& (tempchars[tempchars.length - 1] != '\r'))

System.out.print(tempchars);

else

for (int i = 0; i < charread; i++)

if (tempchars[i] == '\r')

continue;

else

System.out.print(tempchars[i]);









catch (Exception e1)

e1.printStackTrace();

finally

if (reader != null)

try

reader.close();

catch (IOException e1)









public static void readFileByLines(String fileName)

File file = new File(fileName);

BufferedReader reader = null;

try

System.out.println("以行为单位读取文件内容,一次读一整行:");

reader = new BufferedReader(new FileReader(file));

String tempString = null;

int line = 1;

// 一次读入一行,直到读入null为文件结束

while ((tempString = reader.readLine()) != null)

// 显示行号

System.out.println("line " + line + ": " + tempString);

line++;



reader.close();

catch (IOException e)

e.printStackTrace();

finally

if (reader != null)

try

reader.close();

catch (IOException e1)









public static void readFileByRandomAccess(String fileName)

RandomAccessFile randomFile = null;

try

System.out.println("随机读取一段文件内容:");

// 打开一个随机访问文件流,按只读方式

randomFile = new RandomAccessFile(fileName, "r");

// 文件长度,字节数

long fileLength = randomFile.length();

// 读文件的起始位置

int beginIndex = (fileLength > 4) ? 4 : 0;

// 将读文件的开始位置移到beginIndex位置。

randomFile.seek(beginIndex);

byte[] bytes = new byte[10];

int byteread = 0;

// 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。

// 将一次读取的字节数赋给byteread

while ((byteread = randomFile.read(bytes)) != -1)

System.out.write(bytes, 0, byteread);



catch (IOException e)

e.printStackTrace();

finally

if (randomFile != null)

try

randomFile.close();

catch (IOException e1)









private static void showAvailableBytes(InputStream in)

try

System.out.println("当前字节输入流中的字节数为:" + in.available());

catch (IOException e)

e.printStackTrace();





public static void main(String[] args)

String fileName = "C:/temp/newTemp.txt";

ReadFromFile.readFileByBytes(fileName);

ReadFromFile.readFileByChars(fileName);

ReadFromFile.readFileByLines(fileName);

ReadFromFile.readFileByRandomAccess(fileName);




import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.io.Reader;
public class ReadFromFile
public static void readFileByBytes(String fileName)
File file = new File(fileName);
InputStream in = null;
try
System.out.println("以字节为单位读取文件内容,一次读一个字节:");
// 一次读一个字节
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = in.read()) != -1)
System.out.write(tempbyte);

in.close();
catch (IOException e)
e.printStackTrace();
return;

try
System.out.println("以字节为单位读取文件内容,一次读多个字节:");
// 一次读多个字节
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(fileName);
ReadFromFile.showAvailableBytes(in);
// 读入多个字节到字节数组中,byteread为一次读入的字节数
while ((byteread = in.read(tempbytes)) != -1)
System.out.write(tempbytes, 0, byteread);

catch (Exception e1)
e1.printStackTrace();
finally
if (in != null)
try
in.close();
catch (IOException e1)




public static void readFileByChars(String fileName)
File file = new File(fileName);
Reader reader = null;
try
System.out.println("以字符为单位读取文件内容,一次读一个字节:");
// 一次读一个字符
reader = new InputStreamReader(new FileInputStream(file));
int tempchar;
while ((tempchar = reader.read()) != -1)
// 对于windows下,\r\n这两个字符在一起时,表示一个换行。
// 但如果这两个字符分开显示时,会换两次行。
// 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
if (((char) tempchar) != '\r')
System.out.print((char) tempchar);


reader.close();
catch (Exception e)
e.printStackTrace();

try
System.out.println("以字符为单位读取文件内容,一次读多个字节:");
// 一次读多个字符
char[] tempchars = new char[30];
int charread = 0;
reader = new InputStreamReader(new FileInputStream(fileName));
// 读入多个字符到字符数组中,charread为一次读取字符数
while ((charread = reader.read(tempchars)) != -1)
// 同样屏蔽掉\r不显示
if ((charread == tempchars.length)
&& (tempchars[tempchars.length - 1] != '\r'))
System.out.print(tempchars);
else
for (int i = 0; i < charread; i++)
if (tempchars[i] == '\r')
continue;
else
System.out.print(tempchars[i]);




catch (Exception e1)
e1.printStackTrace();
finally
if (reader != null)
try
reader.close();
catch (IOException e1)




public static void readFileByLines(String fileName)
File file = new File(fileName);
BufferedReader reader = null;
try
System.out.println("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null)
// 显示行号
System.out.println("line " + line + ": " +tempString);
line++;

reader.close();
catch (IOException e)
e.printStackTrace();
finally
if (reader != null)
try
reader.close();
catch (IOException e1)




public static void readFileByRandomAccess(String fileName)
RandomAccessFile randomFile = null;
try
System.out.println("随机读取一段文件内容:");
// 打开一个随机访问文件流,按只读方式
randomFile = new RandomAccessFile(fileName, "r");
// 文件长度,字节数
long fileLength = randomFile.length();
// 读文件的起始位置
int beginIndex = (fileLength > 4) ? 4 : 0;
// 将读文件的开始位置移到beginIndex位置。
randomFile.seek(beginIndex);
byte[] bytes = new byte[10];
int byteread = 0;
// 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。
// 将一次读取的字节数赋给byteread
while ((byteread = randomFile.read(bytes)) != -1)
System.out.write(bytes, 0, byteread);

catch (IOException e)
e.printStackTrace();
finally
if (randomFile != null)
try
randomFile.close();
catch (IOException e1)




private static void showAvailableBytes(InputStream in)
try
System.out.println("当前字节输入流中的字节数为:" + in.available());
catch (IOException e)
e.printStackTrace();


public static void main(String[] args)
String fileName = "C:/temp/newTemp.txt";
ReadFromFile.readFileByBytes(fileName);
ReadFromFile.readFileByChars(fileName);
ReadFromFile.readFileByLines(fileName);
ReadFromFile.readFileByRandomAccess(fileName);

参考技术A java读文件主要分按字节读和按字符读,所以取决于文件的存储方式。按您的意思,txt文件中通常是字符,所以就按字符来读取,按字节可能会涉及到编码问题。我写上关键代码作为参考:
//读入文件
FileReader reader = new FileReader(new File("here is the file path.")) ;
StringBuffer sb = new StringBuffer() ;
int r ;
//读取字符,并存入缓存中
while (r = reader.read() != -1)
sb.append(char(r)) ;

reader.close() ;
//把所有字符组成的字符串转化成数字
int finInt = Integer.parseInt(sb.toString()) ;

是这个意思吗?可以商量

以上是关于跪求java代码读取txt文档中的数据 并判断正负 正数返回1 负数返回0 写入另一个txt文档中的主要内容,如果未能解决你的问题,请参考以下文章

python替换txt文件中固定内容

java读取多个txt文件内容,并按照文件名称排序

java 用字符串实现加减法 包括两位小数 金额格式化 可以为正负 跪求!!!!!!

用Python读取文件中的数字并加入list的问题

java按行读取txt文件并与数据库表中的内容进行匹配处理(问题好像比较复杂哈)

Java递归读取文件路径下所有文件名称并保存为Txt文档