主类找不到.dat文件

时间:2013-12-11 20:30:51

标签: java fileinputstream

我正在做一个简单的练习,程序从.dat文件读取数据并在控制台上打印出来。

我正在使用NetBeans。我将.dat文件保存在主文件所在的默认包文件夹中。它找不到.dat文件。

以下是代码:

import java.nio.*;
import java.nio.channels.*;
import java.nio.charset.*;
import java.io.*;

public class BufferConverter {
    public static void main(String[] arguments) {
        try {
            // read byte data into a byte buffer
            String data = "friends.dat";
            FileInputStream inData = new FileInputStream(data);
            FileChannel inChannel = inData.getChannel();
            long inSize = inChannel.size();
            ByteBuffer source = ByteBuffer.allocate( (int) inSize );
            inChannel.read(source, 0);
            source.position(0);
            System.out.println("Original byte data:");
            for (int i = 0; source.remaining() > 0; i++) {
                System.out.print(source.get() + " ");
            }
            // convert byte data into character data
            source.position(0);
            Charset ascii = Charset.forName("US-ASCII");
            CharsetDecoder toAscii = ascii.newDecoder();
            CharBuffer destination = toAscii.decode(source);
            destination.position(0);
            System.out.println("\n\nNew character data:");
            for (int i = 0; destination.remaining() > 0; i++) {
                System.out.print(destination.get());
            }
            System.out.println();
        } catch (FileNotFoundException fne) {
            System.out.println(fne.getMessage());
        } catch (IOException ioe) {
            System.out.println(ioe.getMessage());
        }
    }
}

我应该写一个特定的路径吗?如何让程序找到.dat文件?

Sylvain非常感谢任何帮助

3 个答案:

答案 0 :(得分:3)

  

我正在使用NetBeans。我将.dat文件保存在主文件所在的默认包文件夹中。它找不到.dat文件。

推送时,该文件夹可能与工作目录不同。

使用System.out.println(new File(".").getAbsolutePath());查看您正在运行的位置,然后使用相对于此的文件名,或者弄清楚如何说服Netbeans将文件复制到适当的位置(例如将其放在{{ 1}}目录,我认为它被视为要复制的资源)。

答案 1 :(得分:1)

Netbeans似乎没有调用根包文件夹中生成的*.class。 Netbeans使用的工作目录可能类似于bin/或类似的东西。

您应该检查执行参数或将文件名作为参数传递(配置Netbeans发送src/yourpackage/file.dat作为第一个参数,使用参数[0]来获取它例如)

答案 2 :(得分:0)

  

主类无法找到.dat文件

以下代码应该有效。

InputStream is = BufferConverter.class.getResourceAsStream("friends.dat");