如何在java中实现文件I/O?

如何在java中实现文件I/O?,java,Java,这个节目怎么了?未报告异常,未找到文件异常。 我认为如果文件不存在,它会创建一个新的文件,比如C++。有什么我遗漏的吗?只包含OutputStream cout=newfileoutputstream(f);在methode中,使用try catch或add throws关键字 import java.util.Scanner; import java.io.*; public class Filewrite { public static void main(String[] args)

这个节目怎么了?未报告异常,未找到文件异常。
我认为如果文件不存在,它会创建一个新的文件,比如C++。有什么我遗漏的吗?

只包含OutputStream cout=newfileoutputstream(f);在methode中,使用try catch或add throws关键字

import java.util.Scanner;
import java.io.*;
public class Filewrite
{
   public static void main(String[] args)
   {
      Scanner in = new Scanner(System.in);
      System.out.print("Enter your name:: ");
      String Name = in.nextLine();
      System.out.print("Enter your marks in subject 1:: ");
      int marks1 = in.nextInt();
      System.out.print("Enter your marks in subject 2:: ");
      int marks2 = in.nextInt();
      System.out.print("Enter your marks in subject 2:: ");
      int marks3 = in.nextInt();
      File f = new File("testdata.txt");
      OutputStream cout = new FileOutputStream(f);    //Error is here
      System.out.println("Name    " + Name);
      System.out.println("Marks1  " + marks1);
      System.out.println("Marks2  " + marks2);
      System.out.println("Marks3  " + marks3);
   }
}
要将内容写入文件,您需要使用cout.write(此处为您的内容)


希望它能帮助您。

您需要使用try/catch块,或者向方法中添加throws
FileNotFoundException
(并在调用方法中处理)


基本异常处理,如果您不熟悉,现在是学习的时候了。

如果找不到文件,则不会自动创建该文件。
您必须指示创建该文件

示例

 try { OutputStream cout = new FileOutputStream(f);
 } catch (FileNotFoundException e) {
   e.printStackTrace();
 } 

但是,您必须处理异常。

让我们从显而易见的事情开始

抛出:如果 文件存在,但它是一个目录而不是常规文件,不存在 存在但无法创建,或由于任何其他原因无法打开

这意味着您需要捕获您可以处理的异常,或者重新抛出您不想/不能处理的异常

在这种情况下,您应该尝试捕获异常,并至少显示详细信息

仔细看一看(和主题上列出的其他教程)

你还应该看看

现在,使用
FileOutputStream
没有什么错,但是它对于简单地编写文本来说是低级的,下面的示例使用了一个
BufferedWriter
,它可以写入
FileWriter
,使用它的主要原因是因为它有两个简单的方法,可以让生活更轻松,第一个是
write(String)
,另一个是
newLine

File f = new File( "testdata.txt" );

// create new file if does not exists
f.createNewFile(); // if exists, ignores

OutputStream cout = new FileOutputStream( f );

// now write the data into the file
cout.write( "Name    " + Name + "\n" );
cout.write( "Marks1  " + marks1 + "\n" );
cout.write( "Marks2  " + marks2 + "\n" );
cout.write( "Marks3  " + marks3 + "\n" );

此示例使用Java 7+的
try with resource
功能,一旦
try块
存在,它会自动关闭编写器,从而节省了执行
最后
块的时间。FileNotFoundException可能处理无法创建文件的可能性。“如果文件存在,但它是一个目录而不是一个常规文件,不存在但无法创建,或者由于任何其他原因无法打开”,那么如何包装文件并在程序中使用它。通常在C++中自动创建文件。文件输出流应该创建如果上述条件不满足的话……你得到的确切错误是什么?@猎人程序根本就不运行。它不是一个合法的Java程序。接受这里给你的建议,克服你的厌恶,加入“尝试-抓住”模块,然后再试一次。如果你只是想争论一下,我看不出发帖的意义。
public class Filewrite {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Enter your name:: ");
        String name = in.nextLine();
        System.out.print("Enter your marks in subject 1:: ");
        int marks1 = in.nextInt();
        System.out.print("Enter your marks in subject 2:: ");
        int marks2 = in.nextInt();
        System.out.print("Enter your marks in subject 2:: ");
        int marks3 = in.nextInt();

        System.out.println("Name    " + name);
        System.out.println("Marks1  " + marks1);
        System.out.println("Marks2  " + marks2);
        System.out.println("Marks3  " + marks3);
        File f = new File("testdata.txt");

        try (BufferedWriter bw = new BufferedWriter(new FileWriter(f))) {
            bw.write("name=" + name);
            bw.newLine();
            bw.write("Marks1=" + marks2);
            bw.newLine();
            bw.write("Marks2=" + marks2);
            bw.newLine();
            bw.write("Marks3=" + marks2);
        } catch (IOException exp) {
            exp.printStackTrace();
        }
    }
}