Java 如何读取和写入文件?

Java 如何读取和写入文件?,java,Java,目标是从示例MonthTemps.txt中读取并写入两个文件(HotDays.txt、ColdNights.txt)。使用下面的代码,我没有得到任何编译错误,但是假设要写入的两个文件仍然是空的。我必须特别使用文件和PrintWriter 样本: 日高低点 17852 27955 38662 48762 58561 68965 76960 87259 96762 107063 117458 125848 13 52 38 145835 155942 16 48 34 174227 18 46 24

目标是从示例MonthTemps.txt中读取并写入两个文件(HotDays.txt、ColdNights.txt)。使用下面的代码,我没有得到任何编译错误,但是假设要写入的两个文件仍然是空的。我必须特别使用文件和PrintWriter

样本:

日高低点

17852

27955

38662

48762

58561

68965

76960

87259

96762

107063

117458

125848

13 52 38

145835

155942

16 48 34

174227

18 46 24

195337

20 44 28

214127

22 46 37

235946

246754

25 64 37

26 45 31

27 54 31

28 48 39

294438

304630

31 57 28

现行代码

import java.io.*;
导入java.util.Scanner;
公共级MJackson_Lab05{
公共静态void main(字符串[]args)引发IOException{
//声明值。我尝试在0处初始化,因为它给出了一个错误。
白天,低温,高温;
//开放样本
File MonthTemp=新文件(“MonthTemps.txt”);
如果(!MonthTemp.exists()){//检查是否存在
System.out.println(“未找到文件!”);
系统出口(1);
}
Scanner myInput=新扫描仪(MonthTemp);//扫描仪对象
//创建新文件
PrintWriter hotD=新的PrintWriter(“HotDays.txt”);
PrintWriter coldN=新的PrintWriter(“ColdNights.txt”);
//从扫描仪读取数据。
while(myInput.hasNext()){
day=myInput.nextInt();
lowTemp=myInput.nextInt();
highTemp=myInput.nextInt();
如果(高温>=80)
热打印项次(日+高温+低温);
如果(低温<30)
coldN.println(日+高温+低温);
}
myInput.close();
hotD.close();
coldN.close();
系统出口(0);
}
}

要读取文件,您需要:

InputStreamReader is = new InputStreamReader("path_of_your_file");
BufferReader br = new BufferReader(is);
然后使用while循环读取每一行,直到有一个有效的输入,使用:

br.readLine();
要在文件上写入,您必须使用
OputStreamReader(“输出路径”)
而不是
inputStreamReader(“输入路径”)
write()
方法执行相同的操作


这是最简单的方法,当然这取决于你的最终目的。你读取了所有的数据,但没有存储,你应该把条件放到while循环中

    while (myInput.hasNext()){
        day = myInput.nextInt();
        lowTemp = myInput.nextInt();
        highTemp = myInput.nextInt();

        if (highTemp >= 80)
            hotD.println(day + "  " + highTemp + "  " + lowTemp);
        else if (lowTemp < 30)
            coldN.println(day + "  " + highTemp + "  " + lowTemp);
    }
while(myInput.hasNext()){
day=myInput.nextInt();
lowTemp=myInput.nextInt();
highTemp=myInput.nextInt();
如果(高温>=80)
热打印项次(日+高温+低温);
否则,如果(低温<30)
coldN.println(日+高温+低温);
}

如何让我的问题不被搁置?我对这个很陌生,真的没时间了。我已经复习了答案,但什么也没听到。
    while (myInput.hasNext()){
        day = myInput.nextInt();
        lowTemp = myInput.nextInt();
        highTemp = myInput.nextInt();

        if (highTemp >= 80)
            hotD.println(day + "  " + highTemp + "  " + lowTemp);
        else if (lowTemp < 30)
            coldN.println(day + "  " + highTemp + "  " + lowTemp);
    }