Чтение ASCII-файла с FileChannel и ByteArrays

Вы можете реализовать свой собственный визуальный джойстик, используя функции обратного вызова unity new , такие как OnBeginDrag OnDrag и OnEndDrag. Существует уже сделанный пакет Visual Joystick для Unity, поэтому реализовать его можно, как изобретать колесо.

Все, что вам нужно сделать, это импортировать пакет CrossPlatformInputManager из Unity's UnityStandardAssets , затем используйте CrossPlatformInputManager.GetAxis("Horizontal") и CrossPlatformInputManager.GetAxisRaw("Horizontal"), чтобы прочитать направление изображения / большого пальца.

Чтобы сделать это с нуля, вы можете передать этот учебник видео .

5
задан isherwood 18 January 2015 в 01:07
поделиться

6 ответов

Необходимо знать то, что кодирование файла, и затем декодируйте ByteBuffer в CharBuffer с помощью того кодирования. Принятием файла является ASCII:

import java.util.*;
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
import java.nio.charset.*;

public class Buffer
{
    public static void main(String args[]) throws Exception
    {
        String inputFile = "somefile";
        FileInputStream in = new FileInputStream(inputFile);
        FileChannel ch = in.getChannel();
        ByteBuffer buf = ByteBuffer.allocateDirect(BUFSIZE);  // BUFSIZE = 256

        Charset cs = Charset.forName("ASCII"); // Or whatever encoding you want

        /* read the file into a buffer, 256 bytes at a time */
        int rd;
        while ( (rd = ch.read( buf )) != -1 ) {
            buf.rewind();
            CharBuffer chbuf = cs.decode(buf);
            for ( int i = 0; i < chbuf.length(); i++ ) {
                /* print each character */
                System.out.print(chbuf.get());
            }
            buf.clear();
        }
    }
}
7
ответ дан 18 December 2019 в 12:03
поделиться

buf.getChar () ожидает 2 байта за символ, но Вы только храните 1. Используйте:

 System.out.print((char) buf.get());
3
ответ дан 18 December 2019 в 12:03
поделиться

Изменение оператора печати к:

System.out.print((char)buf.get());

Кажется, помогает.

2
ответ дан 18 December 2019 в 12:03
поделиться

Существует ли конкретная причина, почему Вы читаете файл в способе, которым Вы делаете?

Если Вы читаете в ASCII-файле, необходимо действительно использовать Читателя.

Я сделал бы это что-то как:

File inputFile = new File("somefile.txt");
BufferedReader reader = new BufferedReader(new FileReader(inputFile));

И затем используйте также readLine или подобный для фактического чтения в данных!

1
ответ дан 18 December 2019 в 12:03
поделиться

В зависимости от кодирования somefile.txt символ не может на самом деле состоять из двух байтов. Эта страница дает больше информации о том, как считать потоки с надлежащим кодированием.

Неприятность, файловая система не говорит Вам кодирование файла, потому что это не знает. Что касается его, он - просто набор байтов. Необходимо или найти некоторый способ передать кодирование к программе, для обнаружения его так или иначе, или (если возможный) всегда гарантируют, что кодирование является тем же (таким как UTF-8).

2
ответ дан 18 December 2019 в 12:03
поделиться

Да, это - Unicode.

Если у Вас есть 14 Символов в Вашем Файле, Вы только добираетесь 7'?'.

Ожидание решения. Все еще размышление.

0
ответ дан 18 December 2019 в 12:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: