Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
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


Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Steve Jobs, 15 anni dopo: John Ternus e ...
LaLiga chiede all'Europa di inserire qua...
Microsoft festeggia cinque anni di Windo...
WhatsApp blocca l'accesso sui telefoni n...
AMD non riesce a stare dietro alla doman...
Android Auto: stop alla compatibilità pe...
Più delle montagne russe: Six Fla...
Dopo Sapphire, anche Gigabyte rilascia a...
Motorola in offerta Prime Day: moto g57 ...
Lenovo in offerta Prime Day: IdeaPad S5 ...
Evento Apple del 13 ottobre: fra i nuovi...
FRITZ! in offerta Prime Day: Repeater 27...
GMK TriggerKey: un mod kit per maggiore ...
RTX Spark deve ancora debuttare, ma AMD ...
Robot aspirapolvere Prime Day: i prezzi ...
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: 12:20.


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