Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr sbarca ufficialmente in Italia con tre modelli elettrici premium, X, 7X e 001, distribuiti da Jameel Motors su una rete di 52 punti vendita già attivi. La Zeekr X parte da 39.900 euro, la 7X da 54.100: piattaforma a 800V, chip Snapdragon di ultima generazione, ricarica ultraveloce e un'autonomia dichiarata fino a 615 km WLTP. Le prime consegne sono previste a metà aprile
Marathon: arriva il Fortnite hardcore
Marathon: arriva il Fortnite hardcore
Marathon è il titolo multiplayer competitivo del momento. Ecco quali sono le caratteristiche di gioco principali, insieme alle nostre prime considerazioni dopo qualche "run" nell'extraction shooter di Bungie
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
A New York HP ha messo al centro della scena HP IQ, la piattaforma di IA locale da 20 miliardi di parametri. L’abbiamo vista in funzione: è uno strumento che funziona, pensato per un target specifico, con vantaggi reali e limiti altrettanto evidenti
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-06-2007, 17:10   #1
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
[JAVA] scrittura su file

il seguente programma dovrebbe splittare un file. Il costruttore vuole il file e la dimensione dei "pezzi"...beh "quasi" funziona, nel senso che non sempre la riunione dei file che escono fuori è uguale all'originale!

nota1:
ho fatto
Codice:
copy 1.txt+2.txt+...etc temp.txt
e poi
Codice:
fc temp.txt originale.txt
dov'è il problema???

Codice:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;

public class Split
{
    private File file;
    private long splitSize;
    private int splitNumber;
    private int bufferSize;

    public Split(File f, long size) {
        file = f;
        splitSize = size;
        splitNumber = computeSplitNumber();
        bufferSize = splitSize < 4096 ? (int) splitSize : 4096;
    }

    private void split() {
        int digitNum = splitNumber / 10;
        for (int i = 0; i < splitNumber; i++) {
            String outName = f.getName() + (i + 1);
            File outFile = new File(outName);
            try {
                copyFile(outFile, i * splitSize, splitSize);
            }
            catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }

    private void copyFile(File destination, long offset, long dim)
            throws IOException {
        RandomAccessFile in = new RandomAccessFile(file, "r");
        in.seek(offset);
        FileOutputStream out = new FileOutputStream(destination);
        byte[] buffer = new byte[bufferSize];
        long lastPos = dim + offset;
        long bytesWritten = 0;
        int currentBufferSize;
        while ((currentBufferSize = in.read(buffer)) > 0
                && in.getFilePointer() <= lastPos) {
            out.write(buffer, 0, currentBufferSize);
            bytesWritten += currentBufferSize;
        }
        if (in != null)
            in.close();
        if (out != null)
            out.close();
    }

    private int computeSplitNumber() {
        return (int) ((f.length() / splitSize) + 1);
    }
}
nota2:
se invece di usare RandomAccessFile uso FileInputStream e leggo e scrivo 1 carattere alla volta va tutto bene...perchè?
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2007, 18:38   #2
morskott
Member
 
Iscritto dal: Jul 2005
Messaggi: 291
Ho provato questa mia versione e sembra funzionare, vedi un po se è quello che ti serve
Codice:
import java.io.*;

public class SplitFile{
	private File theFile;
	private long size;
	
	public SplitFile(String path,long size){
		this.theFile=new File(path);
		this.size=size;
	}
	
	public void split() throws IOException{
		String nome=getNome(this.theFile);
		String ext=getEstensione(this.theFile);
		FileInputStream fis=new FileInputStream(this.theFile);
		int numeroDiPezzi=getNumeroPezzi(this.theFile.length(),this.size);
		for (int i=0;i<numeroDiPezzi;i++){
			FileOutputStream fos=new FileOutputStream(nome+"_"+String.valueOf(i)+"."+ext);
			for (long k=0;k<this.size;k++){
				int in=fis.read();
				if (in==-1) break;
				fos.write(in);
			}
			fos.close();
		}
		fis.close();
	}
	
	private static String getNome(File theFile){
		return theFile.getName().substring(0,theFile.getName().lastIndexOf("."));
	}
	
	private static String getEstensione(File theFile){
		return theFile.getName().substring(theFile.getName().lastIndexOf(".")+1,theFile.getName().length());
	}
	
	private static int getNumeroPezzi(long length,long size){
		return (((int)length)/((int)size))+1;
	}
	
	public static void main(String[] args) throws IOException{
		File theFile=new File("prova.txt");
		theFile.createNewFile();
		FileOutputStream fos=new FileOutputStream(theFile);
		for (int i=0;i<10000;i++)
			fos.write(i%100);
		fos.close();
		SplitFile sf=new SplitFile(theFile.getPath(),512);
		sf.split();
	}
}
morskott è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2007, 11:15   #3
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
ho provato anche la tua versione e mi dava lo stesso problema...poi ho capito che il carattere strano a fine file lo inserisce il copy di win...grazie cmq!!
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è PNY RTX 5080 Slim OC, sembra una Founders Editio...
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
NVIDIA App si aggiorna: arriva DLSS 4.5 ...
Claude Code: il codice sorgente esposto ...
Recensione POCO X8 Pro: è lui lo ...
Il primo dissipatore a liquido di Noctua...
Opera Neon abilita il protocollo MCP: l'...
Dyson Clean+Wash Hygiene: lava e pulisce...
NVIDIA investe 2 miliardi in Marvell: pa...
Le GPU come garanzia bancaria: CoreWeave...
KeeneticOS si aggiorna alla versione 5: ...
Regno Unito avvia indagine su Microsoft:...
Disney vuole comprare Epic Games e Fortn...
ASUS ROG Crosshair X870E Glacial: il nuo...
Samsung Galaxy Watch 9 si avvicina al la...
GTA 6: i costi di sviluppo sono impressi...
SSD Kioxia EXCERIA PRO G2 4TB, prestazio...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:17.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v