文件输入/输出流不工作
Posted
技术标签:
【中文标题】文件输入/输出流不工作【英文标题】:FileInput/outputstream not working 【发布时间】:2018-06-08 11:56:16 【问题描述】:我在这里有一个简单的输入/输出流:
package managingfilesanddirectories;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Main
public static void main(String[] args)
try (
FileInputStream in = new FileInputStream("selfie.jpg");
FileOutputStream out = new FileOutputStream("newPic.jpg");)
int c;
while ((c = in.read()) != -1)
out.write(c);
catch (FileNotFoundException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
所有文件都在同一个包中,但每当我尝试创建新文件时,都不会创建新文件(包括 .jpg、-和 .txt 文件)。我正在使用 netbeans,我应该将文件放在另一个包或目录中吗?
我得到这个错误:
java.io.FileNotFoundException: test.txt (The system cannot find the file specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at managingfilesanddirectories.Main.main(Main.java:18)
【问题讨论】:
请将e.getMessage()
替换为e.printStackTrace()
以了解您的catch 块中是否存在异常。
它会抛出异常吗?您运行应用程序的默认目录是什么?
已添加异常。没有默认目录,因为我只是添加文件名,并且它们在同一个包中(用于测试目的)
您没有显示整个代码。当前代码对test.txt
文件没有任何作用。
@MarceloTataje OP 正在使用 twr。你在说什么?
【参考方案1】:
对于使用 FileInputStream 或 FileOutputStream,您应该发送 ti 构造函数 File。 例如:
File myFile = new File("C:\\exampleFile.txt");
FileInputStream inputStream;
try
inputStream = new FileInputStream(myFile);
// reading from input stream
catch (FileNotFoundException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
finally
inputStream.close();
为了更好,您应该检查文件和路径是否存在。
【讨论】:
您不需要将File
对象传递给FileInputStream
。 FileInputStream
可以将相对路径作为字符串,如果相对于 JVM 启动的位置不存在该文件,则创建该文件。
无需将文件对象传递给文件输入/输出流。文件名可以正常工作。请参阅 javadocs:docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html
可以,但是需要在构造函数中写完整路径
你设置文件的完整路径吗?以上是关于文件输入/输出流不工作的主要内容,如果未能解决你的问题,请参考以下文章