Documente Academic
Documente Profesional
Documente Cultură
Exp (E_Exceptii)
Clonarea obiectelor
• Obiectele clonabile trebuie să fie instanțe ale unor clase care implementează interfața Cloneable;
protected Object clone() throws CloneNotSupportedException; // shallow copy
Exp (E_Clonare)
Java Native Interface (JNI)
• Este o interfață Java pentru cod nativ.
• Avantaje: reutilizare de cod, performanțe îmbunătățite ca timp de execuție.
• Este dezvoltată pentru utilizare cod C++ si C.
• Sunt definite 9 tipuri de masive unidimensionale, 8 pentru tipurile primitive și unul pentru obiecte:
jintArray, jbyteArray, jshortArray, jlongArray, jfloatArray, jdoubleArray, jcharArray, jbooleanArray,
jobjectArray
• Funcții de lucru cu masive unidimensionale:
jsize GetArrayLength(JNIEnv *env, jarray array); // Dimensiune masiv
ArrayType New<PrimitiveType>Array(JNIEnv *env, jsize length); // Alocare masiv unidimensional
Exemplu: jintArray NewIntArray(JNIEnv *env, jsize len);
jobjectArray NewObjectArray(JNIEnv *env, jsize length, jclass elementClass, jobject initialElement); // Alocare
masiv obiecte
NativeType *Get<PrimitiveType>ArrayElements(JNIEnv *env, ArrayType array, jboolean *isCopy); //
Preluare elemente. Exemplu pentru int:
jint *GetIntArrayElements(JNIEnv *env, jintArray array, jboolean *isCopy)
jobject GetObjectArrayElement(JNIEnv *env, jobjectArray array, jsize index); // preluare un element cu
indexul precizat
void Set<Tip>ArrayRegion(JNIEnv *env, jtipArray a, jsize start, jsize len, const jtip *buf); //
Familie de funcții pentru copiere valori dintr-un buffer într-un masiv
Exemplu: SetIntArrayRegion(JNIEnv *env, jintArray a, jsize start, jsize len, const
jint *buf)
• Constructori:
File(String cale);
File(String dir, String fis);
File(File dir,String fis);
File(URI uri);
• Metode frecvent utilizate ale clasei File:
Exemplu: E_ListareRecursivaDirector
• Filtrarea fișierelor
Se utilizează interfețele FileFilter și FilenameFilter in metodele listFiles a clasei File:
public File[] listFiles(FileFilter filter);
public File[] listFiles(FilenameFilter filter);
Declarații de interfață:
public interface FileFilter;
public interface FilenameFilter;
(Exp: E_FiltrareaFisierelor)
Fișiere cu acces direct
• Sunt implementate prin clasa RandomAccessFile
• Declarația de clasă:
public class RandomAccessFile extends Object implements
DataOutput, DataInput, Closeable;
• Constructori
public RandomAccessFile(File file, String mode) throws FileNotFoundException;
public RandomAccessFile(String name, String mode)
throws FileNotFoundException;
mode: "r" - utilizat doar pentru citire, "rw" - citire si scriere, "rwd" - actualizări sincrone ale
conținutului, "rws" - actualizări sincrone ale conținutului si meta-datelor (dimensiune, data creării, data
modificării, permisiuni etc.)
• Metode de poziționare
long getFilePointer() throws IOException;
long length() throws IOException;
void seek(long poz) throws IOException;
public int skipBytes(int n) throws IOException;
• Citiri/scrieri de nivel scăzut
int read() throws IOException;
int read(byte dst[]) throws IOException;
int read(byte dst[], int index, int lung) throws IOException;
void write(int b) throws IOException;
void write(byte srs[]) throws IOException;
void write(byte srs[], int index, int lung) throws IOException;
• Închidere fișier
void close() throws IOException;
Exemplu: E_FisiereRelative