Sams Teach Yourself Java in 24 Hours Sixième édition par Rogers Cadenhead MP3 Chapitre 20 Erreur de fichier MP3


Je suis un novice java essayant de parcourir le livre répertorié dans le titre de ce post. C'est aussi ma première question à poster sur stack overflow. Il ne semble pas y avoir de forum pour le livre, alors j'ai décidé de demander ici.

Je suis sur le chapitre 20: Lecture et écriture de fichiers en Java 24 heures et je suis arrivé à l'ID3Reader.projet java. J'utilise Netbeans 7 pour créer ce projet. Le code est censé analyser un fichier MP3 (dont j'ai fait mon argument en utilisant le chemin absolu) et ignorez tout sauf les 128 derniers octets. Ensuite, les octets restants sont examinés pour voir s'ils contiennent des données ID3. S'ils le font, les trois premiers octets sont les nombres 84, 65, 71. Puis il affiche le titre, l'artiste, l'album et l'année dans un ordre décroissant.

import java.io.*;

public class ID3Reader {
public static void main(String[] arguments) {
    try {
        File song = new File(arguments[0]);
        FileInputStream file = new FileInputStream(song);
        int size = (int) song.length();
        file.skip(size - 128);
        byte[] last128 = new byte[128];
        file.read(last128);
        String id3 = new String(last128);
        String tag = id3.substring(0, 3);
        if (tag.equals("TAG")) {
            System.out.println("Title: " + id3.substring(3, 32));
            System.out.println("Artist: " + id3.substring(33, 62));
            System.out.println("Album: " + id3.substring(63, 91));
            System.out.println("Year: " + id3.substring(93, 97));
        } else {
            System.out.println(arguments[0] + " does not contain"
                + " ID3 info.");
        }
        file.close();
    } catch (Exception e) {
        System.out.println("Error — " + e.toString());
    }
    }

Encore une fois, j'ai défini l'argument exactement où se trouve le fichier MP3 et j'ai même obtenu le code du site Web pour ce livre.

C:\Documents and Settings\Administrator\My Documents\NetBeansProjects\Java24\Where The Moon Came From - Moonbrows (Twin Of Pangaea). 

Mais à la place, j'obtiens cette erreur.

Error — java.io.FileNotFoundException: C:\Documents (The system cannot find the file specified)

J'ai tiré mes cheveux essayer de trouver quelque chose qui m'aiderait sur ce problème, mais je n'arrive tout simplement pas à trouver quoi que ce soit que je puisse traduire à ce problème. J'apprécierais beaucoup toute information que vous pouvez me donner. S'il y a plus d'informations qui doivent être connues avant que vous puissiez répondre, dites simplement le mot an I will get it.

Author: Andrew Thompson, 2013-01-22

4 answers

C:\Documents and Settings\Administrator\My Documents\NetBeansProjects\Java24\Where The Moon Came From - Moonbrows (Twin Of Pangaea)

Avez-vous ce fichier? Peut-être que vous avez oublié le .mp3 à la fin, ou peut-être que vous n'avez jamais eu le fichier en premier lieu. Sinon, changez le chemin d'accès à l'emplacement de votre fichier comme ceci:

C:\Users\Somebody\Desktop\song.mp3

Aussi, si vous voulez des espaces dans un chemin, vous devez utiliser des guillemets:

"C:\Path with spaces\More spaces\song_thing.mp3"
 2
Author: Doorknob, 2013-01-22 00:46:31

Vous devez probablement mettre le chemin entre les guillemets lors de la "définition de l'argument"; comme ceci:

java ID3Reader "C:\Documents and Settings\Administrator\My Documents\NetBeansProjects\Java24\Where The Moon Came From - Moonbrows (Twin Of Pangaea)."
 2
Author: millimoose, 2013-01-22 00:46:27

Placez votre argument file entre guillemets dans votre commande run, sinon le premier jeton string sera utilisé comme arguments[0], comme transmis par le shell de commande:

java ID3Reader  "C:\Documents and Settings\Administrator\My Documents\NetBeansProjects\Java24\Where The Moon Came From - Moonbrows (Twin Of Pangaea).mp3"
 2
Author: Reimeus, 2013-01-22 00:46:44

, Comme indiqué par le message d'erreur, le nom de fichier a été analysé comme C:\Documents. En effet, l'espace après Documents indique la fin du premier argument et le début du second. Vous devez envelopper l'argument entre guillemets pour qu'il soit traité comme un seul argument.

java ID3Reader "C:\Documents and Settings\..."
 1
Author: mellamokb, 2013-01-22 00:46:51