不确定如何通过其位置访问文件

时间:2014-11-26 14:31:46

标签: java netbeans file-io

基于以下示例。我的计算机上的类位置是C:\ Users \ daniel \ Desktop \ Prototype2 \ src \ examples \ WavAppender.java

如果我将wav文件放在同一个示例目录中。如何更改以下代码?

import java.io.File;
import java.io.IOException;
import java.io.SequenceInputStream;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;

public class WavAppender {
public static void main(String[] args) {
    String wavFile1 = "D:\\wav1.wav";
    String wavFile2 = "D:\\wav2.wav";

    try {
        AudioInputStream clip1 = AudioSystem.getAudioInputStream(new File(wavFile1));
        AudioInputStream clip2 = AudioSystem.getAudioInputStream(new File(wavFile2));

        AudioInputStream appendedFiles = 
                        new AudioInputStream(
                            new SequenceInputStream(clip1, clip2),     
                            clip1.getFormat(), 
                            clip1.getFrameLength() + clip2.getFrameLength());

        AudioSystem.write(appendedFiles, 
                        AudioFileFormat.Type.WAVE, 
                        new File("D:\\wavAppended.wav"));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

5 个答案:

答案 0 :(得分:0)

这取决于程序的执行位置,即执行目录。如果它是examples目录,那么你的.java文件就是它的简单:

new File("wavAppended.wav");

答案 1 :(得分:0)

您可以使用绝对或相对路径来访问您的文件。

大多数人会认为绝对不是必需的,甚至是有害的,因为它们很容易破坏你的程序。我的观点是它们更易于使用,您可以将它们作为确保程序运行的第一步。

无论如何绝对版本将是:

"C:\\Users\\daniel\\Desktop\\Prototype2\\src\\examples\\wav?.wav"

"C:/Users/daniel/Desktop/Prototype2/src/examples/wav?.wav"

相对路径

"examples\\wav?.wav"

"examples/wav?.wav"

因为您的根路径是"C:/Users/daniel/Desktop/Prototype2/src/"

答案 2 :(得分:0)

您应该将您的文件用作资源,如此处另一个SO问题中所述

Preferred way of loading resources in Java

或者您可以使用文件的绝对路径或相对路径。

答案 3 :(得分:0)

将您的文件放在执行程序所在的目录中,文件名可以简单地

String wavFile1 = "wav1.wav";

答案 4 :(得分:0)

您可以使用相对路径

private String filename = "./src/examples/wav1.wav";